第五篇:其他窗口部件 QAbstractButton

QAbstractButton

QAbstractButton 类是按钮部件的抽象基类,提供了按钮的通用功能。它的子类包括标准按钮 QPushButton、工具按钮 QToolButton、复选框 QCheckBox和单选按钮 QRadioButton 等。

QPushButton

QPushButton 提供了创建交互按钮的基本功能。它可以包含文本、图标等,并能够发射各种信号,使得开发者可以轻松地实现按钮的交互行为。

#include <QApplication>
#include <QPushButton>
#include <QMessageBox>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QPushButton btn;
    
    // 设置文本
    btn.setText("按钮");
    btn.show();
    
    // 连接信号槽点击后弹出对话框
    QObject::connect(&btn, &QPushButton::clicked, []() {
        QMessageBox::information(nullptr, "Clicked", "button clicked!");
    });

    return a.exec();
}

在这里插入图片描述

QToolButton

QToolButton 是一种特殊的按钮,可以快速访问特定的命令或选项。与普通的命令按钮不同,工具按钮通常不显示文本标签(不代表不能),而是显示图标。当使用 QToolBar::addAction() 创建新的 QAction 实例或使用 QToolBar::addActions() 将现有操作添加到工具栏时,通常使用 QToolButton。

#include <QApplication>
#include <QHBoxLayout>
#include <QToolButton>
#include <QMenu>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget w;

    QToolButton btn1;
    // 设置箭头类型
    btn1.setArrowType(Qt::DownArrow);
    // 设置按钮是否自动突出,默认为 false
    btn1.setAutoRaise(true);

    QToolButton btn2;
    btn2.setArrowType(Qt::LeftArrow);

    QToolButton btn3;
    // 设置文本
    btn3.setText("查看");
    // 设置图标
    btn3.setIcon(QIcon("C:\\Users\\yxc\\Pictures\\Camera Roll\\discord_midjourney_9_.png"));
    // 设置样式
    btn3.setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

    QToolButton btn4;
    // 设置菜单弹出方式(默认QToolButton::DelayedPopup按一会再弹出)
    btn4.setPopupMode(QToolButton::InstantPopup);
    // 添加菜单
    QMenu menu;
    menu.addAction("剪切");
    menu.addAction("粘贴");
    menu.addAction("复制");
    btn4.setMenu(&menu);

    QHBoxLayout layout;
    layout.addWidget(&btn1);
    layout.addWidget(&btn2);
    layout.addWidget(&btn3);
    layout.addWidget(&btn4);

    w.setLayout(&layout);
    w.show();

    return a.exec();
}

在这里插入图片描述

QToolButton 的样式:

常量描述
Qt::ToolButtonIconOnly只显示图标
Qt::ToolButtonTextOnly只显示文本
Qt::ToolButtonTextBesideIcon文本显示在图标旁边
Qt::ToolButtonTextUnderIcon文本显示在图标下方
Qt::ToolButtonFollowStyle根据QStyle::StyleHint格式显示

QCheckBox

QCheckBox 是一个选项按钮,可以打开(选中)或关闭(未选中)。如果复选框被选中,再次点击这个按钮选中状态会被取消。。复选框通常会向用户提供“多选多”的选择。然而复选框也可以实现“多选一”。例如:QButtonGroup可用于对复选按钮进行逻辑分组(QButtonGroup不提供任何视觉表示),从而允许使用独占复选框。

下图进一步说明了独占和非独占复选框之间的区别(将两种复选框放在了两个QGroupBox容器中):

在这里插入图片描述

实现独占需要设置 autoExclusive 属性为 true。

在这里插入图片描述

Qt::CheckState类型:

常量描述
Qt::Unchecked未选中
Qt::PartiallyChecked半选中
Qt::Checked选中

QCheckBox 默认是两种选中状态,选中和未选中,setTristate(true)用来开启半选中状态。

#include <QApplication>
#include <QWidget>
#include <QCheckBox>
#include <QVBoxLayout>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget w;

    // 垂直布局(暂时先使用,后面会仔细学习)
    QVBoxLayout layout(&w);

    // 添加复选框
    QCheckBox chkBox1;
    chkBox1.setText("语文");

    QCheckBox chkBox2;
    chkBox2.setText("数学");
    chkBox2.setChecked(true);

    QCheckBox chkBox3;
    chkBox3.setText("英语");
    chkBox3.setTristate(true);
    chkBox3.setCheckState(Qt::PartiallyChecked);

    layout.addWidget(&chkBox1);
    layout.addWidget(&chkBox2);
    layout.addWidget(&chkBox3);

    w.show();

    return a.exec();
}

在这里插入图片描述

QRadioButton

QRadioButton 是一个选项按钮,可以打开(选中)或关闭(未选中)。单选按钮通常会向用户提供“多选一”的选择。如果用户选择了另一个按钮,则先前选择的按钮将关闭。如果单选按钮被选中,再次点击这个按钮选中状态是不能被取消的。这是与 QCheckBox 的不同点

#include <QApplication>

#include "widget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Widget w;
    w.show();

    return a.exec();
}

在这里插入图片描述

运行结果如图所示:

在这里插入图片描述

如果我们使用鼠标点击了某个单选按钮,其他按钮将取消选中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值