Qt 5.4 OS X 如何在 QMenu 和 QToolBar 中使用 QAction,但仅在 QToolbar 中显示图标

Posted

技术标签:

【中文标题】Qt 5.4 OS X 如何在 QMenu 和 QToolBar 中使用 QAction,但仅在 QToolbar 中显示图标【英文标题】:Qt 5.4 OS X how to use a QAction in both a QMenu and a QToolBar, but show the icon only in the QToolbar 【发布时间】:2015-04-13 21:27:37 【问题描述】:

在 OS X (Yosemite) 上使用 Qt 5.4,我有一个带有图标的 QAction。我希望图标显示在我添加操作的QToolbar 中。这工作正常。但是,我不希望图标显示在我添加操作的 QMenu 中。

我该怎么做?

【问题讨论】:

【参考方案1】:

您可以在应用程序中使用Qt::AA_DontShowIconsInMenus 属性,也可以通过 QAction::setIconVisibleInMenu(bool visible) 单独使用。直接来自Qt's docs:

QApplication app(argc, argv);
app.setAttribute(Qt::AA_DontShowIconsInMenus);  // Icons are *no longer shown* in menus
// ...
QAction *myAction = new QAction();
// ...
myAction->setIcon(SomeIcon);
myAction->setIconVisibleInMenu(true);   // Icon *will* be shown in menus for *this* action.

【讨论】:

非常感谢,成功了!供参考:doc.qt.io/qt-5/qaction.html#iconVisibleInMenu-prop 和 doc.qt.io/qt-5/qt.html#ApplicationAttribute-enum

以上是关于Qt 5.4 OS X 如何在 QMenu 和 QToolBar 中使用 QAction,但仅在 QToolbar 中显示图标的主要内容,如果未能解决你的问题,请参考以下文章

Qt5-控件-QMenu,QMenuBar-菜单栏详解-菜单热键-菜单校验功能

Qt 中如何隐藏 QMenu

如何使用 Qt 将可折叠元素(QMenu、QComboBox)渲染到位图缓冲区?

如何在 Qt Designer 中删除 QMenu 分隔符?

为啥 QMenu:hover 在 Qt Designer 中不起作用

在 OS X 的 Qt5.5 中找不到 qmake