简述
很多时候,我们在使用 QPushButton 的过程中,会遇到这样一个问题:在一个窗口widget中新建了一个QPushButton,如果widget已经通过setStyleSheet()设置了样式表,那么 QPushButton 的样式就变得和它的父类 widget 的样式一样,显得难看。那么,如果想保留 QPushButton 默认效果的样式,该怎么处理呢?有两种方法:
方法1:再单独设置 QPushButton 的样式
以下是实现QPushButton 默认样式效果相近的代码:
QPushButton *btn2 = new QPushButton(this);
btn2->setText("btn2");
btn2->setStyleSheet("QPushButton{background-color: qconicalgradient(cx:0.5, cy:0.522909, angle:179.9, stop:0.494318 rgba(214, 214, 214, 255), stop:0.5 rgba(236, 236, 236, 255));border: 1px solid rgb(124, 124, 124);border-radius:2px;}"
"QPushButton:pressed{background-color: qconicalgradient(cx:0.5, cy:0.522909, angle:179.9, stop:0.494318 rgba(134, 198, 233, 255), stop:0.5 rgba(206, 234, 248, 255));border-radius:2px;border: 1px solid #5F92B2;}"
"QPushButton:hover{background-color: qconicalgradient(cx:0.5, cy:0.522909, angle:179.9, stop:0.494318 rgba(181, 225, 250, 255), stop:0.5 rgba(222, 242, 251, 255));border-radius:2px;border: 1px solid #3C80B1;}"
);
方法2:对 QPushButton 父类设置样式表时,只针对特定的控件进行设置,可以排除对子控件 QPushButton 的影响。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
#include <QWidget>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->resize(800,600);
//方法2:设置 mainwindow 的样式表
this->setStyleSheet("QMainWindow{background-color:rgb(215,225,235)}");
//this->setStyleSheet("background-color:rgb(215,225,235)"); 对整个mainwindow及子控件设置样式表
//不对 btn1 设置样式表,则它会跟随父类的样式表
QPushButton *btn1 = new QPushButton(this);
btn1->setText("btn1");
btn1->move(0,0);
//方法1:单独设置Qt QPushButton按键默认效果相近的样式表
QPushButton *btn2 = new QPushButton(this);
btn2->setText("btn2");
btn2->setStyleSheet("QPushButton{background-color: qconicalgradient(cx:0.5, cy:0.522909, angle:179.9, stop:0.494318 rgba(214, 214, 214, 255), stop:0.5 rgba(236, 236, 236, 255));border: 1px solid rgb(124, 124, 124);border-radius:2px;}"
"QPushButton:pressed{background-color: qconicalgradient(cx:0.5, cy:0.522909, angle:179.9, stop:0.494318 rgba(134, 198, 233, 255), stop:0.5 rgba(206, 234, 248, 255));border-radius:2px;border: 1px solid #5F92B2;}"
"QPushButton:hover{background-color: qconicalgradient(cx:0.5, cy:0.522909, angle:179.9, stop:0.494318 rgba(181, 225, 250, 255), stop:0.5 rgba(222, 242, 251, 255));border-radius:2px;border: 1px solid #3C80B1;}"
);
btn2->move(100,100);
}
MainWindow::~MainWindow()
{
delete ui;
}