Qt - qtableview - кнопка кликабели в строке таблицы
-
08-10-2019 - |
Вопрос
Мне нужна кнопка / ссылка в пределах строки таблицы QTableView
. Отказ Это открыть диалог, чтобы разрешить редактировать строку более эффективно.
После нескольких часов поиска в Интернете мне еще нет приличного примера.
Я знаю, что это может быть сделано с использованием QItemDelegate
, но я не уверен, как иметь функциональный виджет внутри строки, не заставляя элемент в режиме редактирования сначала.
Любая помощь будет очень ценится.
Решение
Вы можете эмулировать функциональность ссылки, подчеркивая кликабельный текст, а затем снимать ячейку, щелкнувшись через ClexClicked (ROW, COL) сигнал и убедитесь, что COL == EditColouncumn. Затем ряд будет соответствовать какому элементу, которое вы редактируете.
Например,
Имя данных |. Значение 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);