首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >悬停时QAction图标的更改

悬停时QAction图标的更改
EN

Stack Overflow用户
提问于 2016-12-22 13:30:51
回答 1查看 1.4K关注 0票数 1

在我的项目中,我显示了一个带有几个QAction对象的QMenu。我希望当用户将鼠标悬停在QAction图标上时,它会更改。

下面是我当前的代码:

代码语言:javascript
复制
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模式,结果是一样的。如果我切换状态,图标会反转,但在悬停(或单击)时仍然不会改变。

耽误您时间,实在对不起。

EN

回答 1

Stack Overflow用户

发布于 2016-12-22 15:48:28

对菜单和工具栏中的正常/活动图标悬停的支持似乎取决于平台样式,特别是本机Mac样式不支持,即使禁用本机菜单栏(即,使菜单显示在桌面的顶部而不是在应用程序窗口内)。

我在苹果电脑上用Qt Designer表单进行了快速尝试,以复制您的用例(基本上最终使用QIcon::addPixmap()作为相同的C++代码):

代码语言:javascript
复制
?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"));,那么悬停就可以工作,但菜单看起来不再是本机的……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41276356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档