禁用时为QAction设置自定义图标

时间:2009-08-31 17:46:12

标签: user-interface qt qt4

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

3 个答案:

答案 0 :(得分:7)

创建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..." );

如果这确实有效,我会有兴趣学习。我从来没有开始测试它,但它似乎正是这个设计的用途。

答案 1 :(得分:0)

连接一个插槽以发出QAction :: changed()信号,然后在启用或禁用操作时设置图标。 (您可以通过继承QAction并在子类中添加插槽,在构造函数中连接它来完成此操作。)

答案 2 :(得分:0)

如果某人对于谷歌的行动状态看起来相同

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