目录

在 Qt Designer 中也能够看到这⾥的继承关系.

QAbstractButton中 和 QPushButton 相关性较⼤的属性

1. QAbstractButton 作为 QWidget 的⼦类, 当然也继承了 QWidget 的属性. 上⾯介绍的 QWidget ⾥的各种属性⽤法, 对于 QAbstractButton 同样适⽤. 因此表格仅列出 QAbstractButton 独有的属性.2. Qt 的 api 设计⻛格是⾮常清晰的. 此处列出的属性都是可以 获取 和 设置 的. 例如, 使⽤ text() 获取按钮⽂本; 使⽤ setText() 设置⽂本.
代码⽰例: 带有图标的按钮


- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::Widget)
- {
- ui->setupUi(this);
-
- // 创建图标
- QIcon icon(":/doge.png");
- // 设置图标
- ui->pushButton->setIcon(icon);
- // 设置图标⼤⼩
- ui->pushButton->setIconSize(QSize(50, 50));
- }

代码⽰例: 带有快捷键的按钮


- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::Widget)
- {
- ui->setupUi(this);
-
- // 设置图标
- ui->pushButton_target->setIcon(QIcon(":/dog.png"));
- ui->pushButton_target->setIconSize(QSize(100, 100));
- ui->pushButton_up->setIcon(QIcon(":/caret-up.png"));
- ui->pushButton_down->setIcon(QIcon(":/caret-down.png"));
- ui->pushButton_left->setIcon(QIcon(":/caret-left.png"));
- ui->pushButton_right->setIcon(QIcon(":/caret-right.png"));
-
- // 设置快捷键
- ui->pushButton_up->setShortcut(QKeySequence("w"));
- ui->pushButton_down->setShortcut(QKeySequence("s"));
- ui->pushButton_left->setShortcut(QKeySequence("a"));
- ui->pushButton_right->setShortcut(QKeySequence("d"));
-
- // 设置快捷键也可以写作
- // 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));
- }
- void Widget::on_pushButton_up_clicked()
- {
- const QRect& rect = ui->pushButton_target->geometry();
- ui->pushButton_target->setGeometry(rect.x(), rect.y() - 5, rect.width(),
- rect.height());
-
- qDebug() << "up";
- }
- void Widget::on_pushButton_down_clicked()
- {
- const QRect& rect = ui->pushButton_target->geometry();
- ui->pushButton_target->setGeometry(rect.x(), rect.y() + 5, rect.width(),
- rect.height());
-
- qDebug() << "down";
- }
-
- void Widget::on_pushButton_left_clicked()
- {
- const QRect& rect = ui->pushButton_target->geometry();
- ui->pushButton_target->setGeometry(rect.x() - 5, rect.y(), rect.width(),
- rect.height());
-
- qDebug() << "left";
- }
-
- void Widget::on_pushButton_right_clicked()
- {
- const QRect& rect = ui->pushButton_target->geometry();
- ui->pushButton_target->setGeometry(rect.x() + 5, rect.y(), rect.width(),
- rect.height());
-
- qDebug() << "right";
- }

QRadioButton 是单选按钮. 可以让我们在多个选项中选择⼀个
QAbstractButton 中和 QRadioButton 关系较⼤的属性

代码⽰例: 选择性别

2) 修改 widget.cpp, 编辑三个 QRadioButton 的 slot 函数
- void Widget::on_radioButton_male_clicked()
- {
- ui->label->setText("你选择的性别为: 男");
- }
-
- void Widget::on_radioButton_female_clicked()
- {
- ui->label->setText("你选择的性别为: ⼥");
- }
-
- void Widget::on_radioButton_other_clicked()
- {
- ui->label->setText("你选择的性别为: 其他");
- }

4) 当前代码中, 如果程序启动, 则不会选择任何选项.
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::Widget)
- {
- ui->setupUi(this);
-
- // 设置默认选中该按钮
- ui->radioButton_male->setChecked(true);
- ui->label->setText("你选择的性别为: 男");
- }
- // 禁⽤ other 选项
- ui->radioButton_other->setCheckable(false);

使⽤ setEnabled 是更彻底的禁⽤按钮的⽅式. 此时该按钮⽆法被选中, 也⽆法响应任何输⼊
- // 禁⽤ other 选项
- ui->radioButton_other->setEnabled(false);

QCheckBox 表⽰复选按钮. 可以允许选中多个.
代码⽰例: 获取复选按钮的取值

2) 给 pushButton 添加 slot 函数
- void Widget::on_pushButton_clicked()
- {
- QString result;
- if (ui->checkBox_eat->isChecked()) {
- result += ui->checkBox_eat->text();
- }
- if (ui->checkBox_sleep->isChecked()) {
- result += ui->checkBox_sleep->text();
- }
- if (ui->checkBox_play->isChecked()) {
- result += ui->checkBox_play->text();
- }
- qDebug() << "选中的内容: " << result;
- }


按钮类控件在用户界面开发中扮演着重要的角色,主要用于触发特定的操作或事件。以下是关于按钮类控件的小结:
QPushButton:
clicked() 信号响应用户点击。QToolButton:
QRadioButton:
QCheckBox:
QAbstractButton(抽象按钮类):
这些按钮类控件都提供了丰富的功能和灵活的定制选项,开发者可以根据实际需求选择合适的按钮类型来构建用户界面。