我想给菜单项添加无色图标。为了看起来合理,图标应该与菜单中使用的文本具有相同的颜色。除了Ubuntu,它可以在任何地方运行。问题是默认的Ubuntu Unity主题对主菜单和应用程序中的其他文本(例如弹出菜单)使用不同的颜色。我需要主菜单特别使用的颜色。
QApplication.palette().color(QPalette.Text)返回应用程序中的文本所使用的深灰色。它在深灰色的菜单背景上几乎看不见。
我在QMenu子代上尝试了palette()方法,但它返回的值与QApplication.palette()相同。
发布于 2015-03-18 04:28:37
原来QMainWindow.menuBar().palette()在屏幕上方有与Unity菜单相匹配的颜色(我刚刚了解到它被称为appmenu)。这使得使用与菜单文本相同的颜色成为可能。
但是有一个问题。激活的菜单项不使用QtIcon.Active模式的图标版本。这可以在高对比度模式下看到。文本颜色会改变,但图标颜色不会改变。当选择菜单项时,图标会“消失”。对于一个完美的程序来说,这还不够好。
我尝试了很多变通方法,比如用QIcon.addPixmap()给图标添加额外的像素图。毫无办法。应用程序菜单在一个单独的进程中运行,并且不希望我们的“活动”图标。因此,我将绘制真实的图标,这些图标在任何合理的背景下看起来都很好,并且不需要改变小部件的颜色。
太可惜了。我认为QIcon模式和状态是专门为这些任务创建的。
https://stackoverflow.com/questions/29045905
复制相似问题