QSS Workaround 用于 QComboBox 的一个困难的绘制主题
如果您不使用 QSS 块,则 QComboBox 将使用其 OS-Look-and-Feel 进行绘制。如果您开始指定 QSS 规则,则 QComboBox 的某些或所有子控件开始失去 OS-Look-and-Feel。在最坏的情况下,您现在必须在 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;
}