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

相关推荐
CodeWithMe17 分钟前
【C++】线程池
开发语言·c++
mahuifa27 分钟前
Qt内置图标速查表
qt·图标·qstyle·qicon
专注API从业者40 分钟前
《Go 语言高并发爬虫开发:淘宝商品 API 实时采集与 ETL 数据处理管道》
开发语言·后端·爬虫·golang
wuqingshun3141591 小时前
蓝桥杯 2. 确定字符串是否是另一个的排列
数据结构·c++·算法·职场和发展·蓝桥杯
欧先生^_^1 小时前
Scala语法基础
开发语言·后端·scala
hu_yuchen2 小时前
C++:BST、AVL、红黑树
开发语言·c++
炯哈哈2 小时前
【上位机——MFC】视图
开发语言·c++·mfc·上位机
我也不曾来过12 小时前
继承(c++版 非常详细版)
开发语言·c++
purrrew2 小时前
【JAVA ee初阶】多线程(3)
java·开发语言
1白天的黑夜13 小时前
贪心算法-2208.将数组和减半的最小操作数-力扣(LeetCode)
c++·算法·leetcode·贪心算法