按钮QPushButton
QPushButton
在 Qt 中用于表示一个按钮控件,它继承自抽象 QAbstractButton
类。
QPushButton属性
属性 | 说明 |
---|---|
text | 按钮中的文本。 |
icon | 按钮中的图标。 |
iconSize | 按钮中图标的大小。 |
shortCut | 按钮对应的快捷键。 |
autoRepeat | 按钮是否会重复触发(即当按住按钮或快捷键不放时,是否持续触发事件, true 为按住重复触发, false 则反之)。 |
autoRepeatDelay | 重复触发的延时时间,按住按钮多久以后,开始重复触发事件。 |
autoRepeatInterval | 重复触发的周期。 |
default | 设置为按下 enter 时默认触发的按钮(一个窗口只能有一个默认按钮)。 |
autoDefault | 控制按钮是否能成为默认按钮。 |
在代码中对这些属性进行设置的接口,都是
set+属性名()
遵循小驼峰命名规则,如设置text
属性的接口是setText()
。
设置PushButton图片
通过 qrc 设置按钮图片。
#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
使用匿名对象传参。
#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;
}
但是上面这种方式在快捷键非法时并不会报错,只是不能生效,所以实际推荐使用枚举的写法:
#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;
}
注意枚举中的所有键都是全大写的。
如果想要设置组合键可以这样设置:
ui->pushButton_up->setShortcut(QKeySequence("ctrl+w"));ui->pushButton_up->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_W));
注意,ctrl 和 shift 这些键在 Qt 中不加
Key_
,所以其他组合键报错可以查表看一下枚举怎么定义的名称。枚举实现组合键的原理其实很简单,
CTRL
实际被定义为了一个很大但尾部几乎都是0
的数,而其他的key_
键都是很小的数。这样两个键组合得到的值就是组合键的枚举值。