Qt - QTableView - кнопка Clickable в строке таблицы
Мне нужна возможность иметь кнопку/ссылку в строке таблицы QTableView
. Это откроет диалог, позволяющий более эффективно редактировать эту строку.
После нескольких часов просмотра в Интернете я еще не нашел достойного примера.
Я знаю, что это, вероятно, будет сделано с помощью QItemDelegate
, но я не уверен, как иметь функциональный виджет внутри строки, не вставляя элемент в режим редактирования в первую очередь.
Любая помощь будет принята с благодарностью.
Ответы
Ответ 1
Вы можете эмулировать функциональность ссылки, подчеркивая текст, доступный для кликов, а затем захватывать щелчок ячейки через сигнал cellClicked (row, col) и проверять, что col == editColumn. Тогда строка будет соответствовать тому элементу, который вы редактируете.
Например,
Имя данных | Значение 1 | Значение 2 | Редактировать
connect (tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(editSlot(int, int)));
...
void ClassName::editSlot(int row, int col){
if (col == 3) {
doWork(row);
}
}
Ответ 2
Для этого вы можете использовать setIndexWidget
, более подробную информацию см. в Qt documentation.
В качестве примера, чтобы вставить кнопку в первом столбце второй строки (непроверенный код):
tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);