【发布时间】:2018-01-11 23:28:57
【问题描述】:
我想在QTableView 的单元格中放入一个自定义小部件。 Widget 可以是QPushButton、复选框或其他东西。我尝试了以下方法,但没有一个让我满意:
- 使用委托。此策略可以绘制小部件,但不能是自定义小部件,并且无法交互。
- 使用
QTableView::setIndexWidget()。使用这种策略,customed-widget 完全完全覆盖单元格,绑定到QTableView的委托不起作用,这意味着 a-double-click() 不会对单元格进行编辑操作。
请注意,该功能是独立的,就像插件一样。所以我不能做以下事情。
- 从
QTableView继承。我只能得到一个与QTableView绑定的指针变量----只有QTableView的一个对象。 - 从任何模型继承。该模型由其他用户控制,程序员编写模型不应该也不能只使用我自定义的模型。
这个问题真的很复杂,太多的约束限制了设计。
【问题讨论】:
-
我认为您将不得不走代理方式。您可以使用自定义小部件,并且可以与它们进行交互。见:stackoverflow.com/questions/16660292/…
-
QItemDelegate::createEditor() 仅在单击单元格时进行绘制。需要的是小部件可以预先显示,如果我单击单元格,另一个委托也可以工作。但是 QItemDelegate::paint() 只绘制,不提供可以交互的真实小部件
-
tableView->openPersistentEditor(索引)。有了它,它总是可见的!
-
仍然没有工作
标签: c++ qt qtableview