Вопрос

Мне нужна кнопка / ссылка в пределах строки таблицы 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top