如何在QMenu中更改操作的图标大小?

4
我正在尝试使用以下代码调整QMenu中QActions的图标大小,但不起作用。
QMenu *menu;
menu =new QMenu();
menu->setStyleSheet("QMenu::icon{height:20px;width:20px});"

如果有人能提供解决方案,我会非常感激。

3个回答

5
我们可以像这样设置样式表来管理图标的大小:
QAction *action = new QAction("Exit", this);
action->setIcon(QIcon(":/images/resources/exit.png"));


QMenu *menu = new QMenu("File");
menu->addAction(action);
menu->setStyleSheet("QMenu {icon-size: 200px;} QMenu::item {background: transparent;}");

ui->menubar->addMenu(menu);

屏幕截图

但是它会显示为不正确的大小,所以最好使用QToolBar

在你的cpp文件中输入以下内容:

ui->ToolBarName->setIconSize(QSize(50,50));

在设计师中,点击您的 QToolbar 并设置 iconSize。

image


@HiFile.app-bestfilemanager 绝对同意。当我看到这是被接受的答案时,我以为自己读错了帖子。已标记。 - Edward Severinsen
你说得对,我的朋友。我更新了我的回答并进行了更详细的解释,感谢你的回复。@EdwardSeverinsen - Farhad

4

以下是对我有效的解决方案:

QMenu *menu;
menu =new QMenu();

QToolButton *button=new QToolButton(menu);
button->setFixedSize(50,50);
QWidgetAction *action=new QWidgetAction(this);
action->setDefaultWidget(button);
menu->addAction(action);

如果您的问题已经得到解决,也许您应该接受自己的答案。 - Jean-François Fabre
我在你的代码中没有看到任何图标和文本。 - Erhan

1

多年后我偶然发现了这个问题。我记得曾经遇到过这个问题,现在又遇到了。这一次我终于成功地解决了它。虽然有点奇怪,但至少应该得到一些关注,尤其是文档方面。

关键是:您需要为QMenuQMenu::item设置样式。如果您只通过以下方式设置图标大小:

QMenu {icon-size: 40px;}

直到你设置类似的内容,否则它将保持被忽略

QMenu::item {background: transparent;}

很不幸,这将重置菜单样式表,您需要处理 hover 状态以使其可用。但是,嗯,似乎对我有效。
也在 qt 论坛上发布了此帖子

icon-size 不适用于 QMenu。请查看文档:https://doc.qt.io/qt-6/stylesheet-reference.html - Erhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接