Qt - QTableView - 表格行内可点击按钮

22

我需要在QTableView的表行中添加一个按钮/链接,以便更高效地打开对该行进行编辑的对话框。

经过数小时在网络上的搜索,我仍然没有找到一个像样的例子。

我知道这可能需要使用QItemDelegate来完成,但我不确定如何在行内具有一个可用的小部件而不强制将其项首先进入编辑模式。

非常感谢任何帮助。


你说的“表格行中的按钮”是指什么?整行还是单个单元格? - Pie_Jesu
2个回答

25

你可以使用setIndexWidget实现此操作,有关更多信息,请参见Qt文档

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

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);

4
据我所读,在大数据集上设置行级小部件可能会导致明显的性能损失。 - cweston

1
你可以通过给可点击的文本添加下划线来模拟链接的功能,然后通过 cellClicked(row, col) 信号捕获单元格点击事件并检查 col == editColumn。这样,row 将对应于你正在编辑的项目。
例如,
数据名称 | 值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);
  }
}

5
为什么被接受的答案总是未能实际回答问题?仅仅为了在表定义时向表项添加一个单独的静态按钮或链接而定义一个新的信号槽连接是没有意义的。老实说,StackOverflow 应该默认将当前得到最多赞的回答标记为“被接受的答案”,并且动态更新。 - Cecil Curry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接