在自定义树视图中显示QCombobox向下箭头

问题描述 投票:0回答:1

我创建了一个自定义模型,视图(树)和委托,一切似乎都工作正常,只有一个小问题。树的一些单元格是组合框。当用户选择时,组合框按预期工作(自定义createEditor,setEditorData和setModelData委托方法)。我遇到的问题是仅在选择单元格时才会显示向下箭头。我希望始终显示向下箭头。

我不确定哪种方法是控制向下箭头的显示。它是来自模型数据(可能是decorationrole)还是委托的paint方法。注意我没有使用任何样式表。

更新:

找到了我在here之后的解决方案。基本上在我的自定义委托的paint方法中结束了以下内容。

    QStyleOptionComboBox comboBoxOption;
    comboBoxOption.rect = option.rect;
    comboBoxOption.state = option.state;
    comboBoxOption.state |= QStyle::State_Enabled;
    comboBoxOption.editable = false;
    comboBoxOption.currentText = index.data(Qt::DisplayRole).toString();

    QApplication::style()->drawComplexControl(QStyle::CC_ComboBox, &comboBoxOption, painter);
    QApplication::style()->drawControl(QStyle::CE_ComboBoxLabel, &comboBoxOption, painter);
c++ qt
1个回答
0
投票

当QTreeItemView显示自己的项目时。它使用QStyledItemDelegate来显示内容。编辑单元格时,创建真正的QCombobox小部件。因此,编辑和显示项目有不同的方法。您应该更改QStyledItemDelegate :: paint逻辑,以便在单元格显示(绘画)时查看其他装饰。生成QStyledItemDelegate的子项并定义自己的paint()方法。这不是第一次简单。但这是在细胞中实施“箭头”的真正方式。

© www.soinside.com 2019 - 2024. All rights reserved.