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);