在我的项目中,我显示了QMenu
个QAction
个对象。我希望用户将鼠标悬停在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
但是,当用户将鼠标悬停在Normal
上时,图标不会更改。我尝试过模式Active
和extension SKView {
open override func rightMouseDown(theEvent: NSEvent) {
self.scene?.rightMouseDown(theEvent)
}
,结果是一样的。如果我切换状态,图标会反转,但在悬停时仍然不会更改(或点击此处)。
感谢您的时间。
答案 0 :(得分:1)
支持在菜单和工具栏中悬停正常/活动图标似乎取决于平台样式,特别是不支持本机Mac样式,即使禁用本机菜单栏的使用(即,菜单显示在桌面的顶部,而不是在应用程序窗口内。)
我已经在Mac上使用Qt Designer表单快速尝试复制您的用例(基本上最终使用QIcon::addPixmap()
作为相同的C ++代码):
?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"));
然后悬停工作,但菜单看起来不再是原生的......