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

时间:2015-04-29 09:26:21

标签: c++ qt4

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

Menu
- information_A
- information_B
- information_C

现在我希望条目information_B以不同的颜色绘制。我该如何存档?

2 个答案:

答案 0 :(得分:1)

编辑:我在这篇文章中找到了最佳解决方案: link 在你的情况下,它将简单:

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

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