QMenu:为特定的 QAction 设置文本颜色

QMenu: Set text color for specific QAction

我有一个 QMenu 作为上下文菜单,如下所示:

Menu
- information_A
- information_B
- information_C

现在我想将条目 information_B 涂成不同的颜色。我该如何存档?

编辑:我在这个 post 中找到了最佳解决方案: 在你的情况下,它会很简单:

QMenu contextMenu(this);
QString menuStyle(
        "QMenu::item{"      
        "color: rgb(0, 0, 255);"
        "}"
    );
contextMenu.setStyleSheet(menuStyle);

有关更多选项和可能性,请查看我上面提供的 link 中的答案。

先前的解决方案:
您可以使用 QWidgetAction 而不是 QAction,并使用您想要的文本和样式表定义 QLabel,然后将其分配给您的 QWidgetAction。但请记住,您必须调整 QLabelwidthheight,以使其看起来与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 选择器设置默认菜单项的样式。

即:

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; }");

此方法的局限性在于它只能对一项应用特殊样式。