在QTableView中显示行中所有单元格的编辑器

时间:2009-04-21 01:11:23

标签: qt qt4

当用户开始编辑QTableView中的任何单元格时,我想连续显示所有单元格的编辑器。我做了几次尝试,但我无法获得正确的行为。

  • 打开多个编辑器的唯一方法是QAbstractItemView::openPersistentEditor() - 尝试连续调用QAbstractItemView::edit()只会导致一个编辑器。
  • 我无法使用clicked()中的doubleClicked()QAbstractItemView等信号来调用编辑,因为它不会尊重视图的编辑触发器。
  • 似乎没有“编辑完成”信号。我想将此信号连接到一个插槽,该插槽为编辑行中的单元调用closePersistentEditor()

任何建议都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:3)

我不想成为坏消息的承载者,但我想不出任何简单的方法来做你想做的事。我可以想到几个选项,每个选项都比上一个更痛苦:

  • 您可以创建一个始终显示编辑器的委托,当用户更改所选行时,为新选择的行设置该委托,为取消选择的行设置原始委托。
  • 您可以尝试从表视图继承,并覆盖为给定行中的所有内容绘制适当项的行为。我不知道这会有多难,但我怀疑它会是多么微不足道。
  • 您可以创建自己的视图来显示模型。我从来没有这样做过,而且我讨厌考虑“完成”支持模型所需要的一切。但是,为了与一个特定的模型匹配,您可能可以逃脱它。