我有一个作为上下文菜单的QMenu
,它看起来像这样:
Menu
- information_A
- information_B
- information_C
现在我想让条目 information_B
以不同的颜色显示,如何实现呢?
编辑:我在这篇帖子中找到了最好的解决方案:链接 对于你的情况,只需要简单地执行以下操作:
QMenu contextMenu(this);
QString menuStyle(
"QMenu::item{"
"color: rgb(0, 0, 255);"
"}"
);
contextMenu.setStyleSheet(menuStyle);
QWidgetAction
代替QAction
,定义具有所需文本和样式表的QLabel
,然后将其分配给QWidgetAction
。但请记住,您必须调整QLabel
的宽度和高度,以使其看起来与QAction
相同。// label
QLabel *text = new QLabel(QString("your text here"), this);
text->setStyleSheet("color: blue");
// init widget action
QWidgetAction *widAct= new QWidgetAction(this);
widAct->setDefaultWidget(text);
contextMenu.addAction(widAct);
QMenu::setDefaultAction
将其设置为默认,并使用QMenu::item:default
选择器为默认菜单项设置样式。
I.e.:
QMenu* menu = new QMenu("My menu");
QAction* actionToStyle = new QAction("My action");
menu->addAction(actionToStyle);
menu->setDefaultAction(actionToStyle);
menu->setStyleSheet("QMenu::item:default { color: #ff0000; }");
QMenu
的源代码,发现它调用了各种隐藏成员。所以我猜当使用LGPL
时,没有办法使用现有的功能? - Zaiborg