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

cwe*_*ton 22 c++ qt qtableview qitemdelegate

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

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

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

任何帮助将不胜感激.

Ton*_*vel 25

您可以使用setIndexWidget它,请参阅Qt文档以获取更多信息.

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

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);
Run Code Online (Sandbox Code Playgroud)

  • 我在大型数据集上读到过,设置行级小部件可能会导致明显的性能损失。 (4认同)

Gat*_*Guy 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么接受的答案总是无法真正回答问题?仅仅为了在表定义时添加单个静态按钮或链接到表项而定义新的信号槽连接是没有意义的。老实说,StackOverflow 应该默认动态地将当前获得最多赞成票的答案标记为“已接受”。 (5认同)