在QMenu::indi中使用Qt样式表

2024-05-16 10:12:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用样式表来定制我的一个Qt应用程序的外观(实际上是pyqt,但还是一样)。在

这是我为QMenu使用的样式表代码。它正确地为我的QMenu着色,但它也使我的所有指示器(选中的QMenu项)具有方格背景,就像它们是透明的一样。在

QMenu {
    background-color: "#242424"; 
    color: "#D5D5D5";
}

如果我在指示器上设置一个背景颜色,指示器背景的中心是正确的,但是在中心正方形周围有一个很大的边框,仍然是方格图案,并且检查停止出现。在

^{pr2}$

我还注意到文档示例中显示的宽度和高度属性不起作用。在

有没有人在定制QMenus的颜色和外观时遇到过类似的问题?你怎么解决的?在


Tags: 代码应用程序颜色qt中心样式表pyqt指示器
2条回答

我在Qt如何处理QMenu::indicators的样式表中找到了一个解决方案,似乎是documented bug。在

我没有使用image属性,而是使用了background-image属性,它以本机大小插入图像,而不是缩小图像。仍然无法设置指示器的大小,但可以使用padding属性移动菜单项文本,以便显示整个指示器图像。在

QMenu::item {
    padding: 3px 20px;
}

QMenu::indicator:checked {
    background-image: url(/path/to/image.png);
}

如果这就是你要做的,我会用QPalette来驱动你的颜色。但是如果这只是冰山一角,并且您正在寻找更多的样式定制,那么您必须定义几乎所有的属性(可以在Qt文档中找到)。如果你想用其他的表来定义它们的继承,即使你也要这样做。在

另外,值得注意的是,我还没有在文档中看到,如果您想修改样式表但仍然可以访问调色板颜色,可以在样式表中使用palete(ColorRole),如下所示:

QMenu {
    background-color: palette(Window);
}

无论如何…这里有一些选择:

QPalette解决方案

^{pr2}$

样式表解决方案

http://doc.qt.nokia.com/4.7-snapshot/stylesheet-examples.html#customizing-qmenu

我会复制高级定制一个,并调整所有的值,而不是真正删除其中任何一个,因为这是所有的卡片房子。在

相关问题 更多 >