我正在使用样式表来自定义我的一个Qt应用程序的外观(实际上是pyqt,但只是相同)。
这是我用于QMenu的样式表代码。它正确地为我的所有QMenu着色,但它也会使我的所有指示器(已检查的QMenu项目)具有方格背景,就好像它们是透明的一样。
QMenu { background-color: "#242424"; color: "#D5D5D5"; }
如果我在指示器上设置了背景颜色,指示器背景的中心颜色正确,但是中心正方形周围有一个大的边框仍然是格子状的,并且检查停止出现。
QMenu::indicator { background-color: "#242424"; }
我还注意到文档示例中显示的宽度和高度属性不起作用。
是否有人在尝试自定义QMenus的颜色和外观时遇到类似问题?你是怎么解决的?
答案 0 :(得分:1)
如果这就是你所做的一切,我会使用QPalette来改变你的颜色。但是如果这只是冰山的一角,你正在寻找更多的风格定制,你必须定义几乎所有的属性(可以在Qt文档中找到)。无论出于何种原因,Qt似乎没有继续使用它们的样式表,所以如果你甚至尝试做一些像菜单上的角落那样的东西,你也必须定义所有其他属性。
另外,值得注意的是我在文档中没有真正看到过,如果你想修改样式表但仍然可以访问调色板颜色,你可以在样式表中使用调色板(ColorRole),比如这样:
QMenu {
background-color: palette(Window);
}
无论如何......这里有一些选择:
QPalette解决方案
menu = QMenu(self)
palette = menu.palette()
palette.setColor(menu.backgroundRole(), QColor('#242424'))
menu.setPalette(palette)
样式表解决方案
http://doc.qt.nokia.com/4.7-snapshot/stylesheet-examples.html#customizing-qmenu
我会复制高级自定义版本并调整所有值,而不是真正删除任何值,因为它们都是纸牌屋。
答案 1 :(得分:1)
我找到了Qt如何处理QMenu ::指标样式表的documented bug的解决方法。
我没有使用image
属性,而是使用background-image
属性,该属性以原始大小插入图像,而不是缩小它。仍然无法设置指标的大小,但您可以使用padding
属性移动菜单项文本,以便显示整个指标图像。
QMenu::item {
padding: 3px 20px;
}
QMenu::indicator:checked {
background-image: url(/path/to/image.png);
}