【问题标题】:Set a custom icon for a QAction when disabled禁用时为 QAction 设置自定义图标
【发布时间】:2009-08-31 17:46:11
【问题描述】:

是否可以在禁用 QAction 时显示自定义图标?例如。启用工具时显示图标 A,禁用工具时显示图标 B。

【问题讨论】:

    标签: user-interface qt qt4


    【解决方案1】:

    创建QAction 时,您将其传递给QIcon。虽然我自己没有尝试过,但我注意到QIcon 有一个函数void QIcon::addPixmap ( const QPixmap & pixmap, Mode mode = Normal, State state = Off )Mode 可以是 NormalDisabledActiveSelected 之一。因此,我认为这样的事情会起作用:

    QPixmap enabled_icon( "enabled.png" );
    QPixmap disabled_icon( "disabled.png" );
    QIcon icon( enabled_icon );
    icon.addPixmap( disabled_icon, QIcon::Disabled );
    QAction action( icon, "&Menu action..." );
    

    如果这确实有效,我将有兴趣了解。我从来没有测试过它,但它似乎正是它的设计用途。

    【讨论】:

    • 这是执行此操作的正确方法,尽管我建议不要对同一操作使用两个完全不同的图标 - 这往往会混淆用户界面。
    • @Thomi 添加颜色以显示项目是否处于活动状态如何?
    【解决方案2】:

    连接一个插槽以发送 QAction::changed() 信号,然后在启用或禁用该操作时设置图标。 (您可以通过子类化 QAction 并在子类中添加插槽,在构造函数中连接它来做到这一点。

    【讨论】:

      【解决方案3】:

      如果有人在寻找相同的动作状态

      QIcon icon;
      icon.addPixmap( selectedPixmap, QIcon::Normal,QIcon::On );
      icon.addPixmap( normalPixmap, QIcon::Normal,QIcon::Off );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-09
        • 2011-11-20
        • 2019-09-19
        • 1970-01-01
        相关资源
        最近更新 更多