如何将 QPushButton 插入 TableView 并使其查看/显示?

Posted

技术标签:

【中文标题】如何将 QPushButton 插入 TableView 并使其查看/显示?【英文标题】:How to insert QPushButton into TableView and make it view/display? 【发布时间】:2015-12-11 11:03:15 【问题描述】:

很抱歉不得不走这条路,但是这个问题已经存在,我可以在那里问,但不不,首先需要 50 的声望。这给我 1。

来自一个答案:

QPushButton* viewButton = new QPushButton("View");
tableView->setIndexWidget(model->index(counter,2), viewButton);

我试过了,但按钮根本不显示,代码有效但单元格中没有任何显示。查看了 spinbox 示例并尝试了按钮委托 - 不成功

我使用QStandardItemModel 来保存数据,将模型添加到设置为tableView->setModelQSortFilterProxyModel(用于过滤目的)。显示数据没问题,虽然不是按钮。

【问题讨论】:

【参考方案1】:

setIndexWidget(QModelIndex const& index, QWidget*) 中的 index 参数应该属于同一个模型,该模型是在视图中设置的。您的变量“模型”指的是什么?到数据持有者模型(不是设置为视图模型的模型!!!)或代理模型? 一种安全的方法是调用:

tableView->setIndexWidget(tableView->model()->index(counter,2), viewButton);

【讨论】:

我正在使用 QStandardItemModel *m_model (= 上面代码中的模型),这是我的 Q_PROPERTY ... 使用的成员变量。此 m_model 设置为 proxyfiltermodel,用于过滤。 proxyFilterModel 设置为 tableview->setModel. 我应该阅读您的答案,因为我应该使用我的 filterproxymodel 中的索引而不是我的 standarditemmodel 索引吗? 试过了,出现分段错误 段错误可能有多种原因。我会尝试逐步检查表达式 tableView->model()->index(counter,2) 的有效性: assert(nullptr != tableView->model());断言(tableView->model()->index(counter,2).isValid());断言(nullptr!= viewButton);还有一个天真的问题:您不会为多个模型索引使用同一个 viewButton 对象,不是吗? 不,只是这个模型索引。但是应该按照您的建议对它进行测试 assert...

以上是关于如何将 QPushButton 插入 TableView 并使其查看/显示?的主要内容,如果未能解决你的问题,请参考以下文章

如何去除QGraphicsView&Scene上添加的QPushButton的边界线

如何将按键分配给在循环中创建的 QPushButton

当 QProgressBar 存在时如何居中对齐 QPushButton?

将 QPushButton 宽度缩小到最小

如何向 QPushButton 添加悬停过渡?

如何将 QPushButton 放入小部件中的 Qt3DWindow 中?