Qt常用控件之按钮QPushButton

按钮QPushButton

QPushButton 在 Qt 中用于表示一个按钮控件,它继承自抽象 QAbstractButton 类。

QPushButton属性

属性 说明
text 按钮中的文本。
icon 按钮中的图标。
iconSize 按钮中图标的大小。
shortCut 按钮对应的快捷键。
autoRepeat 按钮是否会重复触发(即当按住按钮或快捷键不放时,是否持续触发事件, true 为按住重复触发, false 则反之)。
autoRepeatDelay 重复触发的延时时间,按住按钮多久以后,开始重复触发事件。
autoRepeatInterval 重复触发的周期。
default 设置为按下 enter 时默认触发的按钮(一个窗口只能有一个默认按钮)。
autoDefault 控制按钮是否能成为默认按钮。

在代码中对这些属性进行设置的接口,都是 set+属性名() 遵循小驼峰命名规则,如设置 text 属性的接口是 setText()

设置PushButton图片

通过 qrc 设置按钮图片。

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QIcon icon(":/jienigui.jpg");
    ui->pushButton->setIcon(icon);
    ui->pushButton->setIconSize(QSize(50,50));//设置图片显示尺寸
}

Widget::~Widget()
{
    delete ui;
}

设置按钮快捷键

Qt 提供了非常方便地设置按钮快捷键的接口。

可以通过 setShortcut() 成员函数设置快捷键,这里的 QkeySequence 使用匿名对象传参。

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->pushButton_up->setShortcut(QKeySequence("w"));
    ui->pushButton_down->setShortcut(QKeySequence("s"));
    ui->pushButton_left->setShortcut(QKeySequence("a"));
    ui->pushButton_right->setShortcut(QKeySequence("d"));
}

Widget::~Widget()
{
    delete ui;
}

但是上面这种方式在快捷键非法时并不会报错,只是不能生效,所以实际推荐使用枚举的写法

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->pushButton_up->setShortcut(QKeySequence(Qt::Key_W));
    ui->pushButton_down->setShortcut(QKeySequence(Qt::Key_S));
    ui->pushButton_left->setShortcut(QKeySequence(Qt::Key_A));
    ui->pushButton_right->setShortcut(QKeySequence(Qt::Key_D));
}

Widget::~Widget()
{
    delete ui;
}

注意枚举中的所有键都是全大写的。

如果想要设置组合键可以这样设置:

cpp 复制代码
    ui->pushButton_up->setShortcut(QKeySequence("ctrl+w"));
	ui->pushButton_up->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_W));

注意,ctrl 和 shift 这些键在 Qt 中不加 Key_ ,所以其他组合键报错可以查表看一下枚举怎么定义的名称。

枚举实现组合键的原理其实很简单, CTRL 实际被定义为了一个很大但尾部几乎都是 0 的数,而其他的 key_ 键都是很小的数。这样两个键组合得到的值就是组合键的枚举值。

相关推荐
找磁材6 分钟前
空心杯电机与永磁体
开发语言·磁性材料·钕铁硼·磁钢
我不管我就要叫小猪15 分钟前
C/C++----命名空间
c语言·开发语言·c++
自由随风飘41 分钟前
JAVA中的面向对象-3
java·开发语言
小羊先生car1 小时前
RTOS-F429-HAL-(动/静态)任务的创建(2026/7/27)
开发语言·算法·c#
无忧.芙桃1 小时前
数据结构之堆
c语言·数据结构·c++·算法·
2301_777998342 小时前
Linux线程控制——从线程创建到线程分离(第三部分:线程等待 pthread_join)
linux·运维·服务器·c语言·c++
LONGZETECH2 小时前
新能源汽车动力系统仿真硬核拆解:五系统分层架构的设计逻辑与技术权衡
c语言·开发语言·架构·汽车·汽车仿真教学软件·汽车教学软件
醉城夜风~2 小时前
C++模板详解:从基础到高级全面解析
java·开发语言·c++
地球驾驶员2 小时前
NX二次开发C#-获取体的外表面
开发语言·c#
RuiZN2 小时前
Muduo---Channel类
运维·服务器·c++