目录
我出现的问题:
我在一个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);
}