QWidget в ячейке таблицы QTableWidget

QWidget в ячейке таблицы QTableWidget

Мы уже помещали произвольные виджеты в QListWidget. В этот раз разберемся, как добавлять виджеты в Qt-Представления на примере QTableWidget. Сразу замечу, что описанный подход одинаково хорошо работает для любой реализации QAbstractItemView.

Разместим в ячейке таблицы кнопку QPushButton.

На подготовительном этапе воспользуемся QtDesigner. Создадим простой виджет, на который добавим QTableWidget. Заполним его произвольными данными.

Обратите внимание, что мы зарезервировали пустой столбец «Действие». В его ячейки мы и добавим кнопки.

Для нумерации столбцов определим перечисление:

По умолчанию виджет, добавленный в ячейку Представления, занимает всю площадь этой ячейки. Для кнопки это нежелательно, поэтому обернем ее во вспомогательный виджет:

Кнопку соединяем со слотом onBtnClicked():

Имея указатель на кнопку-отправителя в onBtnClicked(), мы находим табличный Индекс. Он содержит информацию о номере строки и столбца ячейки, в которой расположена кнопка. По номеру строки запрашиваем данные модели (ФИО), которые затем отображаем в диалоговом окне QMessageBox.

Осталось лишь добавить кнопки в заготовленные для этого ячейки таблицы с помощью setIndexWidget():

А теперь все вместе

Заголовочный файл viewbuttondemo.h:

Реализация в viewbuttondemo.cpp:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий