【Qt 学习笔记】Qt常用控件 | 按钮类控件 | Push Button的使用及说明


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt常用控件 | 按钮类控件 | Push Button的使用及说明

文章编号:Qt 学习笔记 / 21


一、QAbstractButton类

1. 介绍

QAbstractButton类是Qt中所有按钮类的基类,它提供了一些基本的按钮功能和属性。它是一个抽象类,不能直接实例化,而是通过继承它来创建具体的按钮类。

通过继承QAbstractButton类,我们可以创建不同类型的按钮,如QPushButton、QCheckBox、QRadioButton等。这些具体的按钮类会继承并扩展QAbstractButton类的功能,以实现不同类型按钮的特定功能。

2. QAbstractButton的子类

类名功能
QPushButton提供了一个可以点击的按钮。
QRadioButton提供了一个单选按钮。
QCheckBox提供了一个多选按钮。
QToolButton提供了一个更小的按钮,通常用于工具栏上。
QCommandLinkButton提供了一个带有说明文本的按钮。
QDialogButtonBox通常用于创建对话框,并提供了一组预定义的按钮,如Ok、Cancel、Apply等

在这里插入图片描述


二、QPushButton介绍

1. 简介

QPushButton是Qt中的一个按钮控件,用于在界面中添加按钮。它继承自QAbstractButton类,并提供了一系列的信号和槽函数,使得能够方便地响应按钮的点击事件。

2. 常用属性及方法

QPushButton的常用属性和方法有:

  • text:按钮上显示的文本内容
  • icon:按钮上显示的图标
  • clicked():按钮被点击时的信号
  • setText():设置按钮的文本内容
  • setIcon():设置按钮的图标
  • setFixedSize():设置按钮的固定大小

在QAbstractButton 中, 和 QPushButton 相关性较大的属性

属性说明
text按钮中的⽂本
icon按钮中的图标
iconSize按钮中图标的尺⼨
shortCut按钮对应的快捷键
autoRepeat按钮是否会重复触发. 当⿏标左键按住不放时,如果设为 true, 则会持续产⽣⿏标点击事件;如果设为 false,则必须释放⿏标, 再次按下⿏标时才能产⽣点击事件.
autoRepeatDelay重复触发的延时时间. 按住按钮多久之后, 开始重复触发.
autoRepeatInterval重复触发的周期.

在这里插入图片描述


三、QPushButton的使用(代码示例)

1. 带有图标的按钮

  1. 创建resource.qrc文件,并导入图片
    具体操作步骤参考文章QWidget的windowTitle属性 | windowIcon属性 | qrc文件机制
    在这里插入图片描述
  2. 在界面上设置一个按钮
    在这里插入图片描述
  3. 修改 widget.cpp, 给按钮设置图标
    在这里插入图片描述
  4. 运行代码
    在这里插入图片描述

文件代码:

#include "widget.h"
#include "ui_widget.h"
#include<QPushButton>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //创建图标
    QIcon icon(":/duck.jpg");
    //设置图标
    ui->pushButton->setIcon(icon);
    //设置图标大小
    ui->pushButton->setIconSize(QSize(50,50));
}

Widget::~Widget()
{
    delete ui;
}

2. 带有快捷键的按钮

  1. 在界⾯中拖五个按钮.五个按钮的 objectName 分别为 pushButton_target , pushButton_up ,pushButton_down , pushButton_left , pushButton_right 如下图所示
    在这里插入图片描述

  2. 创建 resource.qrc , 并导⼊ 5 个图⽚
    在这里插入图片描述

  3. 修改 widget.cpp, 设置图标资源和快捷键
    在这里插入图片描述

  4. 修改 widget.cpp, 设置四个⽅向键的 slot 函数.
    在这里插入图片描述

  5. 运⾏程序, 使⽤ wasd 均可让鸭鸭移动了
    在这里插入图片描述
    文件代码:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_up_clicked();
    void on_pushButton_down_clicked();
    void on_pushButton_left_clicked();
    void on_pushButton_right_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include<QPushButton>
#include<QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 设置图标
    ui->pushButton_target->setIcon(QIcon(":/duck1.jpg"));

    ui->pushButton_up->setIcon(QIcon(":/up.png"));
    ui->pushButton_down->setIcon(QIcon(":/down.png"));
    ui->pushButton_left->setIcon(QIcon(":/left.png"));
    ui->pushButton_right->setIcon(QIcon(":/right.png"));

    //修改图标的大小
    ui->pushButton_target->setIconSize(QSize(100,100));

    ui->pushButton_up->setIconSize(QSize(70,70));
    ui->pushButton_down->setIconSize(QSize(70,70));
    ui->pushButton_left->setIconSize(QSize(70,70));
    ui->pushButton_right->setIconSize(QSize(70,70));

    // 设置快捷键
    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));
}

Widget::~Widget()
{
    delete ui;
}


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";
}

在这里插入图片描述

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Qt是一种流行的跨平台C++应用程序框架,在GUI开发方面非常出色。Qt包含大量的控件,其中一个是树形控件QTreeView。这个控件允许用户显示带有树形视图的数据模型,它是QAbstractItemView的派生之一。 QTreeView控件具有以下特点: 1. 显示数据模型 - QTreeView控件显示控件绑定的数据模型。用户可以打开和关闭节点以显示或隐藏子节点。 2. 树的构建 - 树的层次结构是通过节点之间的父子关系来定义的。最上面的节点称为根节点,其余的为子节点。 3. 定制化 - QTreeView控件可以被用户定制。用户可以通过设置控件的颜色、字体、大小和对齐方式等来将控件表现为自己想要的样子。 4. 功能强大 - QTreeView控件有很多内置的功能,包括可排序、可过滤、可编辑等等。它也允许用户通过自定义delegate,来实现额外的交互行为。 下面是一些使用QTreeView控件的示例: 1. 创建一个QTreeView控件QTreeView *treeView = new QTreeView(parent); 2. 设置它的数据模型: QStandardItemModel *model = new QStandardItemModel(parent); treeView->setModel(model); 3. 填充数据模型: QStandardItem *rootItem = model->invisibleRootItem(); QStandardItem *item1 = new QStandardItem("Item 1"); QStandardItem *item2 = new QStandardItem("Item 2"); rootItem->appendRow(item1); rootItem->appendRow(item2); 4. 显示控件: treeView->show(); QTreeView控件是一个非常强大的控件,可以用于各种情况下。它可以轻松地显示大量的数据,并让用户轻松地翻阅它们。在GUI开发中,QTreeView控件是一个非常有用的控件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Duck Bro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值