Qt QMenu 设置样式表
Qt QMenu setting a stylesheet
我有一个像这样创建的QMenu。
QMenu *logoMenu = new QMenu();
然后我像这样将其添加到QToolButton中
logoButton->setMenu(logoMenu);
现在我有一个 project.qss 文件,其中包含以下 QMenu 样式表
QMenu#logoMenu {
background-color: #161614; /* sets background of the menu */
border: 0px solid #161614;
width: 150px;
position: absolute;
top: 50px;
}
QMenu::item#logoMenu {
background-color: transparent;
}
QMenu::item:selected#logoMenu {
background-color: #202020;
}
我的问题是样式表不适用于 QMenu,我知道我正在正确加载样式表,因为我可以设置其他小部件的样式。
如果我像这样手动设置样式表
logoMenu->setStyleSheet("QMenu {.....}");
以下是我创建 QMenu 的方式:
logoMenu = new QMenu();
logoMenu->addAction(QString::fromUtf8("Import"));
logoMenu->addAction(QString::fromUtf8("Export"));
logoMenu->addAction(QString::fromUtf8("Help"));
logoMenu->addAction(QString::fromUtf8("Exit"));
logoMenu->setObjectName("logoMenu");
它有效,没问题。有谁知道为什么会这样?
您的 Id 选择器是 QMenu#logoMenu
这意味着匹配对象名称为 "徽标菜单"。所以你需要设置 QMenu( yourMenu->setObjectName( "logoMenu" ) )
注意:如果使用 UI 设计器创建 QMenu,则 Ui 编译器将为 yourMenu->setObjectName( "logoMenu") 生成代码。但是,如果要创建自己的 QMenu,则需要显式设置对象名称才能使用样式类型。
从您在 Ashifs 答案下的评论来看,您在 Qt 对象树中缺少连接。尝试使用与样式表有连接的父级实例化 QMenu。可能只是:
QMenu *logoMenu = new QMenu(this);
或者,您可以通过将样式表应用程序添加到 QApplication 实例来设置样式表应用程序的全局性:
qApp->setStyleSheet("...");
相关文章:
- 在QComboBox或QListWidget中设置所选元素的样式文本?
- 在 QTabWidget 中动态设置单个选项卡的样式
- 如何仅设置 QTabWidget 背景颜色样式表
- Qt自定义小部件外观在设置样式表后没有变化
- 无法增加 QToolButton 的大小(按钮样式设置为 Qt::ToolButtonTextBesideIcon)
- 无法在 qt 中为 QWidget 中的派生类设置样式表
- QT设置了所有对象以外的所有对象样式
- 如何在QT中设置样式表以选择假发背景的随机图像
- 为 QWidget 的私有成员设置样式表
- wxStyledTextCtrl 如何设置关键字样式
- 如何在C++中有条件地设置 C 样式字符串?
- QT Designer-设置样式表 - 现在进行硬编码 - 想要以编程方式设置
- 应用字体更改后,丢失样式表设置
- 设置精度应用于旧的 C 样式代码
- 如何设置Clang-Format样式选项,以在捕获前保持不合格
- 101 Qt 样式表边距填充黑客指南在C++。设置填充不起作用
- 在 foreach 样式循环中设置无符号 int 始终为零
- 如何使用样式表设置QGraphicsScene的背景笔刷
- 我们是否可以像jquery一样在C++/Java中使用链式样式设置器
- gnu缩进的Google c样式设置