Подтвердить что ты не робот

Qt - QTableView - кнопка Clickable в строке таблицы

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

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

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

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

4b9b3361

Ответ 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);