Qt - QTableView - 表格行中的可点击按钮

问题描述 投票:22回答:2

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

经过几个小时的网络搜索,我还没有找到一个体面的例子。

我知道这可能是使用QItemDelegate完成的,但我不确定如何在行中创建一个功能小部件,而不必先将项目强制转换为编辑模式。

任何帮助将不胜感激。

c++ qt qtableview qitemdelegate
2个回答
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);
  }
}

25
投票

你可以使用setIndexWidget,有关更多信息,请参阅Qt documentation

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

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);
© www.soinside.com 2019 - 2024. All rights reserved.