我有一个QMenu
作为上下文菜单,如下所示:
Menu
- information_A
- information_B
- information_C
现在我希望条目information_B
以不同的颜色绘制。我该如何存档?
答案 0 :(得分:1)
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);
答案 1 :(得分:0)
如果您只想为菜单中的单个项目设置样式,则可以使用 QMenu::setDefaultAction
将其设置为默认值,并使用 QMenu::item:default
选择器设置默认菜单项的样式。
即:
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; }");
这种方法的局限性在于它只能对一个项目应用特殊样式。