QT原生控件-QPushButton 的使用及样式

前言


本文主要介绍的是使用代码生成的情况下对控件的介绍,包括拥有的功能及能修改的样式,也会说明在qtdesiner拖拽控件生成和使用代码生成控件的区别(如果有的话,遇到了的会说),此版本不属于最终版本,以后遇到什么新奇的点会继续更新!本文基于QT官方的文档进行的编写,QT版本为qt 5.14.0,编写环境为Windows11。不得不说官方文档真是个好东西,有时候有些不会的上去一看就能有灵感解决了,可惜没有中文版本的。

一、QPushButton初步介绍

QPushButton是我们在开发界面过程中用到的最多次数的控件之一,说难也不难,在官方的文档中也只有几个接口罗列出来,说简单也不简单,因为次数用的多,加上QObject的一些接口能够让QPushButton做很多的事情,比如样式的变化,联动其他控件等等;QPushButton是继承自QAbstractButton的派生类,所以,有些接口还是比较常用的,类似setCheckable(),isChecked()等等,这些继承自QAbstractButton的接口我在篇文章里面就不做介绍了,可以查看QAbstractButton介绍(待完善中…)

二、基本功能

1.创建

QPushButton* btn = new QPushButton("按钮");

// 创建带图标的按钮
QPixmap pixmap(":/icon.png"); // 加载图标
QIcon icon(pixmap);
QPushButton* btn = new QPushButton(icon, "带图标的按钮", this);

2.接口

1)autoDefault()
检查按钮是否设置了autoDefault属性

bool autoDefault() const

2)setAutoDefault()
设置按钮的autoDefault属性;当为true时,在对话框中的按钮获得焦点时会自动成为默认按钮

void setAutoDefault(bool)

3)isDefault()
检查按钮是否是默认按钮

bool isDefault() const

4)setDefault()
设置按钮为默认按钮;默认按钮在对话框中通常有特殊边框效果,当用户按下Enter键时会触发默认按钮的点击事件

void setDefault(bool)

5)isFlat()
检查按钮是否为扁平样式

bool isFlat() const

6)setFlat()
设置按钮的扁平样式;扁平按钮没有3D立体边框效果,通常用于工具栏按钮或其他简洁界面设计

void setFlat(bool)

7)menu()
获取与按钮关联的菜单(如果有)

QMenu *menu() const

8)setMenu()
为按钮设置下拉菜单;设置后按钮右侧会显示下拉箭头,点击箭头会打开关联菜单

void setMenu(QMenu *menu)

三、信号

QPushButton提供了几个关键信号。
1)clicked
最常用的信号,当按钮被点击(鼠标按下并释放)时发出

clicked()

2)pressed
当按钮被按下(鼠标按键按下)时发出

pressed()

3)released
当按钮被释放(鼠标按键释放)时发出

released()

4)toggled
当按钮的状态从选中变为未选中或从未选中变为选中时发出

toggled(bool checked)

值得注意的是,clicked信号是pressedreleased两个信号的综合,所以在实际运用过程中要记得不要弄混了,不然一次触发两个信号。

四、QPushButton样式

伪状态

QPushButton的选择器没有,但是伪状态一大堆,熟练运用的话能开发出很多好看的QPushButton的样式。
:hover
鼠标悬停时触发

QPushButton:hover 
{
    background-color: #45a049;
}

:pressed
鼠标按下时触发

QPushButton:pressed 
{
    background-color: #3e8e41;
}

:disabled
QPushButton使用setDisable(true)时触发

QPushButton:disabled 
{
    background-color: #cccccc;
    color: #666666;
}

:checked
QPushButton为checked状态时触发,需要将setCheckable打开

QPushButton:checked 
{
    background: transparent;
    border: 1px solid #999;
}

:!checked
QPushButton为dischecked状态时触发

QPushButton:!checked
{
    background: transparent;
    border: 1px solid #999;
}

:flat
QPushButton为扁平状态时触发

QPushButton:flat 
{
    background: transparent;
    border: 1px solid #999;
}

后面还会更新一篇关于QPushButton的一些样式,可以期待下。

本次分享就到这里了,如果有什么错误的话请指正,或者有什么疑问的,也可以在评论区一起探讨!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值