gpt4 book ai didi

c++ - Qt QMenu 设置样式表

转载 作者:行者123 更新时间:2023-11-28 07:26:36 44 4
gpt4 key购买 nike

我有一个像这样创建的 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

It means Matches all "QMenu" instances whose object name is "logoMenu". So you need to set object name of QMenu( yourMenu->setObjectName( "logoMenu" ) )

注意:如果 QMenu 是使用 ui 设计器创建的,Ui 编译器将为 yourMenu->setObjectName( "logoMenu") 生成代码。但是,如果您要创建自己的 QMenu,则需要明确设置对象名称以使用您的样式类型。

关于c++ - Qt QMenu 设置样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18666944/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com