实现 QPushButton 默认效果

来源:互联网 发布:南昌小目标网络 编辑:程序博客网 时间:2024/06/05 20:33

简述

很多时候,我们在使用 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;
}


原创粉丝点击