22

我需要在QTableView. 这是为了打开一个对话框,以便更有效地编辑该行。

在网上看了几个小时后,我还没有找到一个像样的例子。

我知道这很可能是使用QItemDelegate.

任何帮助将不胜感激。

4

2 回答 2

26

您可以使用setIndexWidget它,有关更多信息,请参阅Qt 文档

例如,在第二行的第一列中嵌入一个按钮(未经测试的代码):

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);
于 2010-12-11T08:04:44.590 回答
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);
  }
}
于 2010-12-13T19:32:33.747 回答