Qt-QTreeView : How to show a checkbox in a themed application?

标签 qt checkbox treeview themes

我继承了一个使用Qt作为GUI库的主题应用程序。 除此之外,它还有一个使用 QTreeView 构建的关键字树,它以标准方式对文件夹 Pane 中的选定项目进行 WRT:

即。如果选择的所有项目都指定了关键字“植物”,则选中“植物”复选框。如果没有任何项目具有所述关键字,则复选框未被选中,并且如果选择的某些项目已分配了关键字“植物”,则复选框呈灰色。

问题是,虽然上述模型工作正常,但当复选框变灰(处于“不确定”状态)时,它就会从屏幕上消失:

Invisible checkbox

该复选框仍然存在(用户可以单击它并按预期工作),但它是不可见的。

我该如何解决这个问题?

...并且因为我怀疑这是主题的问题,所以我将主题中的相关(恕我直言)部分粘贴到此处:

QTreeView::indicator{
    border: 0px solid red;
    width: 14px;
    height: 16px;
}

QTreeView::indicator:unchecked{
     image: url(UI:checkbox_unchecked.png);
 }

QTreeView::indicator:unchecked:disabled{
     image: url(UI:checkbox_unchecked_disabled.png);
 }

QTreeView::indicator:checked{
     image: url(UI:checkbox_checked.png);
 }

QTreeView::indicator:checked:disabled{
     image: url(UI:checkbox_checked_disabled.png);
}

QTreeView#UIGroup_TreeView{
    background-color: rgb(40, 40, 40);
    alternate-background-color:  rgb(50, 50, 50);
    border: 0px solid black;
}

有什么帮助吗?

最佳答案

正如您在 docs 中看到的那样

QCheckBox 处于不确定状态,您的样式未为其定义图像。

您应该为这些创建图像:

QTreeView::indicator:indeterminate{
     image: url(...);
 }

QTreeView::indicator:indeterminate:disabled{
     image: url(...);
}

关于Qt-QTreeView : How to show a checkbox in a themed application?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781234/

相关文章:

c++ - 使用参数作为 Qt 资源运行 Bash 脚本

javascript - 用回车键选择复选框

c# - 从 ListView 中删除最后一行

javascript - jQuery 使用 toggleClass 选择所有复选框

openerp TreeView 中的超链接

c++ - 使用 CMake 将 qt header 声明为系统 header

c++ - QRegExp : search a pattern that does not contain another pattern

c++ - boost::gregorian::time 到 unix 时间戳作为 double

c# - 查找确切的节点 C#

mysql - sql复杂树行