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

标签 qt qt4

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

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

如有任何建议,我们将不胜感激。

谢谢!

最佳答案

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

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

关于qt - 在 QTableView 中显示行中所有单元格的编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/770686/

相关文章:

c++ - 从 QWidget 中的 QTextEdit 获取文本

c++ - 关于 C 宏无效预处理标记的错误

c++ - 在构建基于 C++ 的软件中包含 QtGui 文件的问题

qt - 无法使用Qt5.6在QtWebEngine中加载pepper flash插件

c++ - 消息处理器 Qt

c++ - 如何用空格填充 QString?

c++ - 从自定义小部件继承

Qt - QTableView 中的 SelectedItems

qt - QDoubleValidator 的 validate() 不起作用?

c++ - 在不同的窗口和/或对话框中显示 QLineEdit 的输入?