QToolButton 设置图标变灰

本文介绍了如何使用QToolButton控件在Qt中实现单击切换图标状态的功能,通过setIcon()方法绑定信号槽,根据按钮状态改变QIcon::Normal(正常)和QIcon::Disabled(灰色)图标,以及相应的文本显示。
摘要由CSDN通过智能技术生成
1、目的

使用一张图片来实现QToolButton控件两种状态(ON和OFF状态)的图标。前提不能使用两张图片,也不能使用setEnable来图标变灰,因为当设置了false之后,控件将不能再切换了。

2、方法

知道可以通过QToolButton有setIcon()来控件设置图标,所以可以绑定信号槽,通过控件状态来改变图标,从达到两种状态的不同图标。而改变图标的状态有枚举QIcon::Mode

这里使用其中两种状态

QIcon::Normal 图标的正常状态(ON状态)

QIcon::Disabled 图标的变灰状态(OFF状态)

3、代码
/// 初始化
QToolButton* toolBtn = new QToolButton(wid);
toolBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置控件上部分为图标,下部分为文本
toolBtn->setFixedSize(100,100); // 固定控件大小
toolBtn->setIconSize(QSize(50,50)); // 固定图标大小
toolBtn->setText("ON");
toolBtn->setCheckable(true);
toolBtn->setChecked(true);
changeIconStatus(toolBtn,true);
connect(toolBtn,SIGNAL(clicked(bool)),this,SLOT(slotBtnClicked(bool)));

/// 槽函数
void MainWindow::slotBtnClicked(bool checked)
{
    QToolButton *toolBtn = qobject_cast<QToolButton*>(sender());
    if(!toolBtn) return;
    changeIconStatus(toolBtn,checked);
}

/// 改变toolBtn图标状态,并改变文本
void MainWindow::changeIconStatus(QToolButton *toolBtn,bool checked)
{
    QString iconPath = ":/images/Qt.png";
    QIcon icon(iconPath);
    QPixmap pix = icon.pixmap(50, 50, checked?QIcon::Normal:QIcon::Disabled);
    toolBtn->setIcon(pix);
    if(checked){
        toolBtn->setText("ON");
    }else{
        toolBtn->setText("OFF");
    }
}
效果

在这里插入图片描述

对你有用就点个赞👍,以后需要用到就收藏⭐

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeKwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值