2010-12-10 184 views
20

我需要能够在QTableView的表格行中有按钮/链接。这是打开一个对话框,以便更有效地编辑该行。Qt - QTableView - 表格中可点击的按钮

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

我知道这很可能是使用QItemDelegate来完成的,但我不确定如何在行中使用一个功能性小部件,而不必先强制该项进入编辑模式。

任何帮助将不胜感激。

+0

你是什么意思,说“按钮表行”?整排?或者在一个单元中? – 2010-12-11 07:20:59

回答

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); 
    } 
} 
+0

为什么接受的答案总是无法真正回答问题?定义新的信号插槽连接仅仅是在表定义时添加一个静态按钮或链接到一个表项是无意义的。老实说,StackOverflow应该默认动态标记当前接收到最多的赞扬为“接受”的答案。 – 2018-02-28 08:10:36

20

您可以使用setIndexWidget获取更多信息,请参阅Qt documentation

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

我已经读过大型数据集,设置行级别的小部件会导致明显的性能损失。 – cweston 2010-12-30 14:23:20