实现 QPushButton 默认效果

简述

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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是很大锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值