Qt - QTableView - кликабельная кнопка в строке таблицы - PullRequest
22 голосов
/ 10 декабря 2010

Мне нужна кнопка / ссылка в строке таблицы QTableView. Это должно открыть диалоговое окно, позволяющее редактировать эту строку более эффективно.

После нескольких часов поисков в Интернете мне еще предстоит найти достойный пример.

Мне известно, что это может быть сделано с помощью QItemDelegate, но я не уверен, как разместить функциональный виджет в строке, не переводя элемент в режим редактирования.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

25 голосов
/ 11 декабря 2010

Для этого вы можете использовать setIndexWidget, за дополнительной информацией обратитесь к документации Qt .

Например, чтобы вставить кнопку в первый столбец второго ряда (непроверенный код):

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);
1 голос
/ 13 декабря 2010

Вы можете эмулировать функциональность ссылки, подчеркнув текст, по которому можно кликнуть, затем захватывая щелчок ячейки с помощью сигнала 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);
  }
}
...