QT:按钮的QSS效果一直在QPushButton:hover的效果上

目录

我出现的问题:

所以解决办法就是:


我出现的问题:

        我在一个QDialog上设置了一个QPushButto按钮,按钮的功能中是关闭QDialog窗口,并且设置了按钮的qss效果:如下方代码的初始效果pushButton和pushButton:hover效果,但按下按钮后,会关闭QDialog窗口,再次打开后应该是初始效果,但它还是hover效果,这样就不是很合理。

Qdialog_qss.css文件下
#pushButton{
    background-color: #1C1B1B;//黑色
    border-radius: 6px 6px 6px 6px;
    opacity: 1;
    border: 1px solid #56442A;

    font-size: 16px;
    font-family: Microsoft YaHei;
    font-weight: 400;
    color: #FFFFFF;
    line-height: 0px;
}
#pushButton:hover{
    /* background: linear-gradient(92deg, #CABD95 0%, #AE8C4E 100%); */
    background-color: #a11212; //红色
    border: 1px solid rgba(255,255,255,0.2) ;
}

而且每次打开都会调用下方的代码,使按钮变回初始化的黑色,而不是悬浮hover的红色,还是没有解决再次打开按钮效果还是在hover的红色上

MessageDialog::MessageDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    this->setModal(true);
    QString path_qss_q = "Qdialog_qss.css";
    QFile file(path_qss_q);
    file.open(QIODevice::ReadOnly);
    QString stylesheet = QLatin1String(file.readAll());
    file.close();
    this->setStyleSheet(stylesheet);
}

所以解决办法就是:

        在这个关闭事件函数中,在关闭窗口时,让鼠标事件离开ui->pushButton按钮。

void MessageDialog::closeEvent(QCloseEvent *event)
{
    QDialog::closeEvent(event);

    QMouseEvent *leaveEvent = new QMouseEvent(QEvent::Leave, QPointF(0, 0), Qt::NoButton, Qt::NoButton, Qt::NoModifier);
    QApplication::postEvent(ui->pushButton, leaveEvent);

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值