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

embedded/2024/10/19 2:18:15/

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

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

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

文章目录

  • Qt常用控件 | 按钮类控件 | Push Button的使用及说明
    • 一、QAbstractButton类
      • 1. 介绍
      • 2. QAbstractButton的子类
    • 二、QPushButton介绍
      • 1. 简介
      • 2. 常用属性及方法
    • 三、QPushButton的使用(代码示例)
      • 1. 带有图标的按钮
      • 2. 带有快捷键的按钮


一、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_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic: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";
}

在这里插入图片描述


http://www.ppmy.cn/embedded/8947.html

相关文章

嵌入式学习57-ARM6(内核编译)

知识零碎&#xff1a; arm2440 精简指令集架构 …

智能家居如何融合人工智能技术

随着科技的飞速发展&#xff0c;智能家居已经成为了现代家庭的一个重要组成部分。而人工智能技术的应用&#xff0c;则使得智能家居更加智能化、便捷化和个性化。让我们一起来探讨智能家居如何融合人工智能技术&#xff0c;为我们的生活带来更多的便利和舒适。 1. 智能语音助手…

基于Spring Boot的新生宿舍管理系统设计与开发

基于Spring Boot的新生宿舍管理系统设计与开发 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 报修处理管理界面图&#xff0c;在报修处理管理页面…

【Lattice FPGA 开发】Modelsim与Diamond联合仿真

本文讲解Modelsim与Diamond进行联合仿真步骤&#xff0c;以及对遇到问题的解决与说明。 文章目录 软件版本0. Diamond设置文件为仿真文件特别注意 1. Diamond设置仿真软件为Modelsim2. Modelsim编译Lattice的库文件2.1 新建文件夹存放库文件2.2 Modelsim中建立新的仿真库2.2.1…

OSPF的LSA详解

一、什么是LSA&#xff1f;LSA作用&#xff1f; 在OSPF协议中&#xff0c;LSA全称链路状态通告&#xff0c;主要由LSA头部信息&#xff08;LSA摘要&#xff09;和链路状态组成。部分LSA只有LSA头部信息&#xff0c;无链路状态信息。使用LSA来传递路由信息和拓扑信息&#xff0c…

el-tree搜索父节点,父子节点一起展示

会2024.04.22今天我学习了如何对el-tree的:filter-node-method方法进行优化&#xff0c;如果我们有多层的节点数据&#xff0c; 比如我们有这样的数据&#xff0c;当我们输入水果的时候应该出现的是水果和特级水果这两个父节点以及对应底下的子节点数据&#xff0c; 用element里…

OpenHarmony轻量系统开发【1】初始OpenHarmony

1.1系统类型 OpenHarmony是由开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营的开源项目&#xff0c;目标是面向全场景、全连接、全智能时代&#xff0c;基于开源的方式&#xff0c;搭建一个智能终端设备操作系统的框架和平台&#xff0c;促进万物互…

如何管理一个团队,因为有些人他不听我的话?

管理一个团队&#xff0c;可以说是难者不会&#xff0c;会者不难。团队如果有一定的执行力基础&#xff0c;员工朴素老实&#xff0c;没有歪风邪气&#xff0c;只要你为人正派&#xff0c;处事公平&#xff0c;思路清晰&#xff0c;奖罚分明&#xff0c;很快就能聚人心出业绩。…