列编辑为QTableWidget中的组合框

时间:2014-08-15 13:52:49

标签: c++ qt qtablewidget qcombobox

我在单元格中有颜色数据。有可能当我双击这个单元格时,我只能通过从组合框中选择值来编辑它?

但是这个组合框始终不可见 - 只有当我点击双倍时。

问题:

  1. 如何只有一列是可编辑的(不是所有列!)
  2. 当我双击此列时,QTableWidget显示QComboBox,我的值将插入此单元格中。 - 怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用自定义itemDelegates执行此操作。

成功之路将是:

  1. 子类QAbstractItemDelegate,重新实现createEditor并确保它创建了你喜爱的组合框。
  2. 使用setItemDelegateForColumn并指定包含颜色内容的列。
  3. 提示:您甚至可以自定义颜色数据的显示,而不仅仅是编辑!

    现在,让我们谈谈只设置一个可编辑的列。你有一个选择。

    方式1.在模型级别进行。让您的模型在flags(QModelIndex)中返回正确的标记,并仅使您的列可编辑。

    方式2.查看级别。在这种情况下,你应该创建一个" dumb" itemDelegate根本不创建编辑器并将其分配给所有其他列。

    就个人而言,我喜欢这种方式1.但这是供你选择的。