无法隐藏QComboBox的Choice-Indicator

时间:2012-07-23 08:59:34

标签: checkbox stylesheet indicator qcombobox qtstylesheets

程序员

当我设置属于 QComboBox (每个QSS)的列表视图的背景颜色时,此QComboBox将不再使用内置光学外观。 Instaed我还必须根据QSS-Stylesheet指定所有光学设置:

QComboBox QListView {
    background-color:white;
    border:1px solid black;
}

列表视图显示可选项,现在左侧显示一个复选框。将检查此框是否为上次使用时选择的项目。

如何使用复选框隐藏列,以便它们不可见并且不会占用屏幕上的任何空间?

提前致谢...

1 个答案:

答案 0 :(得分:4)

QSS针对QComboBox的难以绘制主题的解决方法

如果您不使用QSS块,则会使用其OS-Look-and-Feel绘制QComboBox。如果您开始指定QSS规则,QComboBox的一些或所有子控件开始失去操作系统外观。在最坏的情况下,您必须现在在QSS中指定所有属性。

本文的主题是选择指标,由QStyleViewItem类绘制,是QT源中的... / src / gui / widgets / qcombobox_p.h中实现的渲染助手。这个功能似乎是不可修改的QProxyStyle的子类可以在其他情况下用于硬布局问题。

但是,我通过指定一组精心选择的规则在QSS中找到了解决方案:

/* Background color of popup-list.*/ 
QComboBox QListView{
    background-color:white;
    border:1px solid gray;
}
/* Needed to complete the rule set. */
QComboBox::item:alternate {
    background: white;
}
/* Color of the selected list item. */
QComboBox::item:selected {
    border: 1px solid transparent;
    background:yellow;
}
/* Indicator will shine through the label text if you don't make it hidden. */
QComboBox::indicator{
    background-color:transparent;
    selection-background-color:transparent;
    color:transparent;
    selection-color:transparent;
}