Qt - 获取 QPushButton 图标名称

Posted

技术标签:

【中文标题】Qt - 获取 QPushButton 图标名称【英文标题】:Qt - Get QPushButton icon name 【发布时间】:2013-02-25 08:22:43 【问题描述】:

我有两个状态的 QPushButton。我想为每个状态关联一个图标。

就像音乐播放器中的播放|暂停按钮。

为此,我想获取当前图标名称,以便了解下一个要设置的图标是什么。

我可以继承 QPushButton 但值得吗?

【问题讨论】:

为什么不根据推送状态设置图标?使用QPushButton::ischecked() 我试过了:myButton->setStyleSheet(":checked image: url(:/img/pause.png);"); 但它不起作用。 【参考方案1】:

不是根据QPushButton 的状态设置图标,而是设置一个具有两种状态的QIcon,如果您将其与可检查的QPushButton 一起使用,Qt 将选择正确的图标。

QIcon icon = QIcon();
// 'Off' state corresponds to unchecked state of QPushButton
icon.addPixmap( QPixmap( ":/img/play.png" ), QIcon::Normal, QIcon::Off );
// 'On' state corresponds to checked state of QPushButton
icon.addPixmap( QPixmap( ":/img/pause.png" ), QIcon::Normal, QIcon::On );
QPushButton * button = new QPushButton();
button->setIcon( icon );
button->setCheckable( true );

【讨论】:

【参考方案2】:

使用 QPushButton::icon() 和 QIcon::name() 获取图标名称。

【讨论】:

QIcon 不存在此方法。 在 Qt 4.8 和 5.0 中都可以:qt-project.org/doc/qt-4.8/qicon.htmlqt-project.org/doc/qt-5.0/qtgui/qicon.html 没关系,这个功能不起作用,Qt搞砸了

以上是关于Qt - 获取 QPushButton 图标名称的主要内容,如果未能解决你的问题,请参考以下文章

Qt之使用QSS设置QPushButton图标和文本的位置

如何在 Qt 应用程序中使用样式表更改 QPushButton 图标

如何使用 QPushButton 的系统主题图标——Linux 上的 Qt Designer

(Qt C++) QPushButton setIcon() 不工作

pyqt pyside QPushButton 图标(icon)大小自适应设置

QT5控件-QPushButton和QFocusFrame(按钮和焦点框)