Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QTableWidget中的列编辑为组合框_C++_Qt_Qtablewidget_Qcombobox - Fatal编程技术网

C++ QTableWidget中的列编辑为组合框

C++ QTableWidget中的列编辑为组合框,c++,qt,qtablewidget,qcombobox,C++,Qt,Qtablewidget,Qcombobox,我有一个单元格中的颜色数据。当我双击这个单元格时,我可能只能通过从组合框中选择值来编辑它 但是这个组合框不是一直可见的——只有在我双击时间时才可见 问题: 如何使只有一列是可编辑的(不是所有列!) 当我双击此列时,QTableWidget显示QComboBox,其中包含要插入此单元格的值。-怎么做 您可以使用自定义ItemDelegate执行此操作 成功之路将是: 子类qabstractemdelegate,重新实现createEditor,并确保它创建您喜欢的组合框 使用setItemDele

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

但是这个组合框不是一直可见的——只有在我双击时间时才可见

问题:

  • 如何使只有一列是可编辑的(不是所有列!)
  • 当我双击此列时,QTableWidget显示QComboBox,其中包含要插入此单元格的值。-怎么做

  • 您可以使用自定义ItemDelegate执行此操作

    成功之路将是:

  • 子类
    qabstractemdelegate
    ,重新实现
    createEditor
    ,并确保它创建您喜欢的组合框
  • 使用
    setItemDelegateForColumn
    并使用颜色内容指定一列
  • 提示:您甚至可以自定义颜色数据的显示,而不仅仅是编辑

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

    路1。在模型级别执行此操作。让您的模型在
    标志(QModelIndex)
    中返回正确的标志,并仅使您的列可编辑

    路2。视图级别。在这种情况下,您应该创建一个“dumb”itemDelegate,它根本不创建编辑器,并将其分配给所有其他列

    就我个人而言,我喜欢第一种方式。但这是供您选择的。

    请使用QSpinBox查看