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
。但请记住,您必须调整 QLabel
的 width 和 height,以使其看起来与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; }");
此方法的局限性在于它只能对一项应用特殊样式。
我有一个 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
。但请记住,您必须调整 QLabel
的 width 和 height,以使其看起来与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; }");
此方法的局限性在于它只能对一项应用特殊样式。