【问题标题】:Qt - QTableView - Clickable button in table rowQt - QTableView - 表格行中的可点击按钮
【发布时间】:2011-05-23 16:54:27
【问题描述】:

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

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

我知道这很可能使用QItemDelegate 来完成,但我不确定如何在不先强制项目进入编辑模式的情况下在行内拥有一个功能小部件。

任何帮助将不胜感激。

【问题讨论】:

  • “表格行中的按钮”是什么意思?整排?还是在一个单元格中?

标签: c++ qt qtableview qitemdelegate


【解决方案1】:

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

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

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

【讨论】:

  • 我在大型数据集上读到过,设置行级小部件会导致明显的性能损失。
【解决方案2】:

您可以通过在可点击文本下划线来模拟链接的功能,然后通过 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);
  }
}

【讨论】:

  • 为什么接受的答案总是不能真正回答问题?仅仅为了在表定义时添加一个静态按钮或链接到表项而定义一个新的信号槽连接是没有意义的。老实说,StackOverflow 应该默认动态地将当前获得最多支持的答案标记为“已接受”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 2015-09-23
  • 1970-01-01
相关资源
最近更新 更多