C++ Qt-QTableView-表格行中的可单击按钮

C++ Qt-QTableView-表格行中的可单击按钮,c++,qt,qtableview,qitemdelegate,C++,Qt,Qtableview,Qitemdelegate,我需要QTableView的表行中的按钮/链接。这将打开一个对话框,以便更有效地编辑该行 在网上浏览了几个小时后,我还没有找到一个像样的例子 我知道这可能是通过使用QItemDelegate来实现的,但我不确定如何在不首先强制项目进入编辑模式的情况下在行中拥有一个功能性小部件 非常感谢您的帮助。您可以使用setIndexWidget有关详细信息,请参阅 例如,要在第二行的第一列中嵌入按钮(未测试代码): 您可以通过在可单击文本下划线,然后通过cellClicked(row,col)信号捕获单元格

我需要
QTableView
的表行中的按钮/链接。这将打开一个对话框,以便更有效地编辑该行

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

我知道这可能是通过使用
QItemDelegate
来实现的,但我不确定如何在不首先强制项目进入编辑模式的情况下在行中拥有一个功能性小部件


非常感谢您的帮助。

您可以使用
setIndexWidget
有关详细信息,请参阅

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


您可以通过在可单击文本下划线,然后通过cellClicked(row,col)信号捕获单元格单击并检查col==editColumn来模拟链接的功能。然后,行将对应于您正在编辑的项目

比如说,

数据名称|值1 |值2 |编辑


你说“表行中的按钮”是什么意思?整排?或者在单个单元格中?我已经读到,在大型数据集上,设置行级小部件可能会导致明显的性能损失。为什么接受的答案总是无法真正回答这个问题?定义一个新的信号槽连接仅仅是为了在表定义时向表项添加一个静态按钮或链接是没有意义的。老实说,StackOverflow应该默认为动态地将当前获得最多投票的答案标记为“已接受”
tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);
connect (tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(editSlot(int, int)));

...

void ClassName::editSlot(int row, int col){
  if (col == 3) {
    doWork(row);
  }
}