我需要QTableView
的表格行中的按钮/链接。这是打开一个对话框,以便更有效地编辑该行。
在网上看了几个小时后,我还没有找到一个不错的例子。
我知道这可能是使用QItemDelegate
完成的,但我不确定如何在行中创建一个功能小部件,而不必先将项目强制转换为编辑模式。
非常感谢任何帮助。
答案 0 :(得分:25)
您可以使用setIndexWidget
,有关详细信息,请参阅Qt documentation。
例如,要在第二行的第一列中嵌入按钮(未经测试的代码):
tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);
答案 1 :(得分: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);
}
}