gpt4 book ai didi

c++ - 悬停时 QAction 图标更改

转载 作者:行者123 更新时间:2023-11-30 05:19:12 33 4
gpt4 key购买 nike

在我的项目中,我显示了一个带有多个 QAction 对象的 QMenu。我希望 QAction 图标在用户将鼠标悬停在其上时发生变化。

这是我当前的代码:

QPixmap icons(":/icons/platformIcons.png");

QIcon icon;
icon.addPixmap(icons.copy(0, 0, 16, 16), QIcon::Selected, QIcon::On);
icon.addPixmap(icons.copy(0, 16, 16, 16), QIcon::Selected, QIcon::Off);

ui->actionOpen->setIcon(icon);

但是,当用户将鼠标悬停在 QAction 上时,图标不会改变。我尝试了 NormalActive 模式,结果是一样的。如果我切换状态,图标会反转,但在悬停(或为此单击)时仍然不会改变。

感谢您的宝贵时间。

最佳答案

支持在菜单和工具栏中悬停普通/事件图标似乎取决于平台样式,特别是原生 Mac 样式不支持,即使禁用原生菜单栏的使用(即菜单显示在桌面顶部而不是应用程序窗口内)。

我已经在 Mac 上使用 Qt Designer 表单快速尝试复制您的用例(基本上以相同的 C++ 代码结束,使用 QIcon::addPixmap()):

?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget"/>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>22</height>
</rect>
</property>
<property name="nativeMenuBar">
<bool>false</bool>
</property>
<widget class="QMenu" name="menuYo">
<property name="title">
<string>Yo</string>
</property>
<addaction name="actionFoo"/>
<addaction name="actionBar"/>
</widget>
<addaction name="menuYo"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="actionFoo"/>
<addaction name="actionBar"/>
</widget>
<widget class="QStatusBar" name="statusBar"/>
<action name="actionFoo">
<property name="checkable">
<bool>true</bool>
</property>
<property name="icon">
<iconset>
<normaloff>../red-circle.png</normaloff>
<normalon>../greeb-circle.png</normalon>
<activeoff>../red-square.png</activeoff>
<activeon>../green-square.png</activeon>../red-circle.png</iconset>
</property>
<property name="text">
<string>Foo</string>
</property>
</action>
<action name="actionBar">
<property name="text">
<string>Bar</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>

使用默认的 Mac 样式时,即使将鼠标悬停在菜单和工具栏中,我也只能看到红色/绿色圆圈图标。但是,如果我强制使用另一种风格,例如ui->menuYo->setStyle(QStyleFactory::create("fusion")); 然后悬停有效,但菜单看起来不再是原生的...

关于c++ - 悬停时 QAction 图标更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41276356/

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