Qt-QTableView-кликабельная кнопка в строке таблицы
мне нужна возможность иметь кнопку/ссылку в строке таблицы QTableView
. Это должно открыть диалоговое окно, чтобы эта строка редактировалась более эффективно.
после нескольких часов поиска в Интернете я пока не нашел достойный пример.
Я знаю, что это может быть сделано с помощью QItemDelegate
, но я не уверен,как иметь функциональный виджет в строке, не заставляя элемент в режим редактирования.
любая помощь будет высоко оцененный.
2 ответов
вы можете эмулировать функциональность ссылки, подчеркивая кликабельный текст, а затем захватывая щелчок ячейки с помощью сигнала 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);
}
}
можно использовать setIndexWidget
для этого, см. документации Qt для получения дополнительной информации.
например, чтобы вставить кнопку в первый столбец второй строки (непроверенный код):
tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);