Qt在QTableView单元格

时间:2017-08-04 06:40:02

标签: c++ qt qtableview

我想 - 将一个自定义小部件放入QTableView的单元格中。 Widget可以是QPushButton,复选框或其他内容。我尝试了以下方法,但没有人满足我:

  1. 使用委托。这个策略可以绘制小部件,但不能成为一个定制的小部件,并且无法进行交互。
  2. 使用QTableView::setIndexWidget()。使用这种策略,customd-widget完全覆盖整个小区。绝对,委托绑定到QTableView不起作用,这意味着双击()不会在单元格上进行编辑操作。
  3. 请注意,该功能是独立的,就像插件一样。所以我不能做以下事情。

    1. 继承自QTableView。我只能获得与QTableView绑定的指针变量----只有QTableView的对象。
    2. 从任何模型继承。该模型由其他用户控制,程序员编写模型不应该只使用我自定义的模型。
    3. 问题非常复杂,太多限制因素限制了设计。

2 个答案:

答案 0 :(得分:0)

如果您想使用模型/视图来包含窗口小部件的数据,则无法在没有委托的情况下执行此操作。更糟糕的是,如果你尝试这样做,当元素数量非常高时,你将大大减慢程序的速度,因为每个小部件都将参与事件循环。这不是你想要的。您希望仅使用 用户可见的小部件。

考虑reading this以获得更多解释。

答案 1 :(得分:0)

感谢所有人为这个问题做出贡献,我找到了解决这个问题的方法。 它被解析为"原始思想",它只是使用QModelIndex在tableView上绘制QToolButton。通过QModelIndex,我可以得到我可以绘制任何QWidget的几何位置。但是,这个方法非常复杂,因为我必须维护QModelIndex的更改,比如removeColumns和insertColumns。

另一个问题是我必须区分hide& amp;删除列或行。而且我想我应该发布另一个新问题来寻求帮助。 再次感谢。