程序员
当我设置属于 QComboBox (每个QSS)的列表视图的背景颜色时,此QComboBox将不再使用内置光学外观。 Instaed我还必须根据QSS-Stylesheet指定所有光学设置:
QComboBox QListView {
background-color:white;
border:1px solid black;
}
列表视图显示可选项,现在左侧显示一个复选框。将检查此框是否为上次使用时选择的项目。
如何使用复选框隐藏列,以便它们不可见并且不会占用屏幕上的任何空间?
提前致谢...
答案 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;
}