如何将 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->setModel
的QSortFilterProxyModel
(用于过滤目的)。显示数据没问题,虽然不是按钮。
【问题讨论】:
【参考方案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的边界线