此情况很有可能在设置了伪状态之后,又在程序执行顺序上后加了按钮的背景色样式,比如:
我们先给一个按钮加一个悬浮时的伪状态:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->btnTest,&QPushButton::clicked,this,&MainWindow::on_Test_clicked);
ui->pushButton_3->setStyleSheet("QPushButton:hover {background-color: #3377FF;}");
}
运行后的初始状态:
把鼠标放上去之后:
伪状态正常显示,没什么问题;
若我们在悬浮按钮伪状态之后再给按钮设置一个背景色:ui->pushButton_3->setStyleSheet("background-color: #000000;");
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->btnTest,&QPushButton::clicked,this,&MainWindow::on_Test_clicked);
ui->pushButton_3->setStyleSheet("QPushButton:hover {background-color: #3377FF;}");
ui->pushButton_3->setStyleSheet("background-color: #000000;");
}
新的运行结果:
将鼠标放上去的状态依旧是黑色,悬浮的伪状态丢失;
若我们把代码整体修改一下,即把样式写在一个setStyleSheet里,则效果都不会消失,即无悬浮的时候是黑色,有悬浮的时候是蓝色;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->btnTest,&QPushButton::clicked,this,&MainWindow::on_Test_clicked);
ui->pushButton_3->setStyleSheet("QPushButton {background-color: #000000;}"
"QPushButton:hover {background-color: #3377FF;}");
}
注意:
1.在setStyleSheet中同一个“{}”里的不同属性要用“;”隔开文章来源:https://www.toymoban.com/news/detail-502728.html
ui->pushButton_3->setStyleSheet("background-color: #000000;border-radius: 4px 4px 4px 4px;");
等价于
ui->pushButton_3->setStyleSheet("QPushButton {background-color: #000000;border-radius: 4px 4px 4px 4px;};");
所以background-color与border-radius中间使用了“;”来隔开。
2.{}与{}之间不用写“;”,否则会被第一个“;”截断,下面的按钮样式:黑色圆角无悬浮色文章来源地址https://www.toymoban.com/news/detail-502728.html
ui->pushButton_3->setStyleSheet("QPushButton {background-color: #000000;border-radius: 4px 4px 4px 4px;};QPushButton:hover {background-color: #3377FF;}");
到了这里,关于QPushbutton的hover悬空状态失效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!