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_ 键都是很小的数。这样两个键组合得到的值就是组合键的枚举值。

相关推荐
java1234_小锋3 分钟前
什么是Java三高架构?
java·开发语言·架构
如竟没有火炬13 分钟前
全排列——交换的思想
开发语言·数据结构·python·算法·leetcode·深度优先
嵌入式小李.man26 分钟前
C++第十三篇:继承
开发语言·c++
Bryce李小白33 分钟前
Kotlin Flow 的使用
android·开发语言·kotlin
jarreyer1 小时前
python离线包安装方法总结
开发语言·python
李辰洋1 小时前
go tools安装
开发语言·后端·golang
wanfeng_091 小时前
go lang
开发语言·后端·golang
绛洞花主敏明1 小时前
go build -tags的其他用法
开发语言·后端·golang
ByteCraze1 小时前
秋招被问到的常见问题
开发语言·javascript·原型模式
码银1 小时前
【python】基于 生活方式与健康数据预测数据集(Lifestyle and Health Risk Prediction)的可视化练习,附数据集源文件。
开发语言·python·生活