当前位置: 首页 > news >正文

Qt(基本组件和基本窗口类)

一、基本组件

1. Designer设计师

为什么要上来先将这个东西呢,这个是QT外置的设计界面的工具,没啥用,所以了解一下。我们用的多的是QT内置的界面设计,只需要我们双击我们创建的项目的.ui文件就可以进入这个界面,你对界面所有的修改都会被保存到你的.ui文件里,被写成类似html语言的文件(是类似)。然后我们可以通过ui这个作用域去调用我们设计过的组件,也可以纯代码去创建组件。很明显前者更方便。举个例子,我们想创建一个按钮,有两种方式:

1.1 长按拖到界面内

(1) 可以拖动放置这个按钮的位置

(2) 双击可以改变按钮的文字

1.2 使用代码创建

(1) 先得找到QPushButton类,使用类名去创建一个按钮。

private:QPushButton *but1;

(2) 设置按钮大小、位置和文字

    // 移动按钮到200,200的位置but1->move(200,200);// 设置按钮的宽高but1->resize(100,50);// 设置按钮的文字but1->setText("你好");

 所以Ui界面能实现的,代码都能实现,只是更繁琐,小白最好都练习一下,顺便练习查找帮助文档的能力。查找文档的时候,当前类找不到的函数可以去父类查找。

1.3 界面文件与C++代码的关系

2. 布局layout

可以把布局看做成一个透明的盒子,内部可以放置子组件,这些内部的子组件会按照布局预设的规则进行排序。

2.1 四种布局方式:

垂直布局:内部组件竖着排成一列。

水平布局:内部组件横着排成一排。

格栅布局:内部组件排布成n*m的表格。

表单布局:用户搭建用户输入的布局效果

2.2 布局的使用
(1) 设置属性。可以设置组件之间的间隔,组件与layout框的间隔(上下左右)等。
补充:所有组件都可以在右下角属性第一行更改组件名字。

(2) 选中布局后,点击可以打破布局。

布局可以贴合窗口,只需要选中窗口对象后,再次点击按钮之一即可。

(3) 可以使用伸展组件填充空白。

(4) 布局也是可以嵌套的,对于外层布局而言,内层布局相当于外层布局的一个子组件。

3. QLabel标签

显示文本或图像的简单控件,支持富文本和超链接。常用于静态内容展示或搭配其他控件作为说明标签。但是需要注意的是:QLabel不能与用户交互(不能点击),只能展示使用,因此没有合适的信号函数。

基本属性:

4. QAbstractButton按钮类

QAbstractButton是按钮类的抽象基类,因此内部包含类按钮的基础属性和函数。

QAbstractButton按钮类的基础属性:

按钮常用信号:

4.1 Check Box(复选框)

概念

  • 允许用户多选,每个Check Box可以独立选中或取消。
  • 常用于“兴趣爱好”、“协议同意”等场景。

常用信号/事件

  • Qt:stateChanged(int)、toggled(bool)

4.2 Radio Button(单选按钮)

概念

  • 一组Radio Button中只能选中一个,常用于“性别选择”、“支付方式”等场景。
  • 组内互斥,选中一个会自动取消其他。

常用信号/事件

  • Qt:toggled(bool)

4.3 Push Button(普通按钮/按键)

概念

  • 最常见的按钮,点击后立即触发某个操作(如“提交”、“确定”、“关闭”)。
  • 没有选中/未选中状态,只有“按下”动作。

常用信号/事件

  • Qt:clicked()、pressed()、released();(分别为点击,按压和释放的信号)

4.4 信号/事件总结表

控件类型Qt信号Web事件典型用途
Check BoxstateChanged, toggledchange多选
Radio Buttontoggledchange单选(组内互斥)
Push Buttonclicked, pressedclick操作触发

4.5 练习:

实现点击radio button触发槽函数,使用toggled信号函数。

dialog.h:
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QDebug>namespace Ui {
class Dialog;
}class Dialog : public QDialog
{Q_OBJECTpublic:explicit Dialog(QWidget *parent = 0);~Dialog();private:Ui::Dialog *ui;private slots:void toggledSlot(bool);                //槽函数
};#endif // DIALOG_H
dialog.cpp:
#include "dialog.h"
#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{ui->setupUi(this);//连接信号槽函数,选中按键就进入槽函数执行connect(ui->radioButton,SIGNAL(toggled(bool)),this,SLOT(toggledSlot(bool)));
}Dialog::~Dialog()
{delete ui;
}void Dialog::toggledSlot(bool checked)
{if(checked){qDebug() << "被选中";}else{qDebug() << "不选了";}
}

5. QLineEdit单行文本输入框(掌握)

QLineEdit用于输入一个单行文本,常用的属性:

常用的信号:

三、基本窗口类

基本界面类就以下三种,一般都是创建的时候把.h文件和.c文件一起创建的很少单独取创建。

当我们创建一个项目的时候,会有下面三种选择,但是当我们创建了项目想要实现多个串口跳转的时候,会发现可以单独创建.c或者.h文件,都是依情况而定。

1. QWidget

作为所有用户界面对象的基类,QWidget 提供了窗口的基本属性和行为。它可以包含子控件,处理用户输入事件(如鼠标、键盘),并管理布局。非窗口部件需要嵌入到父部件中显示。

QWidget的属性在Designer中显示为淡黄色。常用属性如下:

策略:除非必要情况,或者实现特殊功能,否则我们的策略尽量不要修改,因为当前的策略对组件是最友好的。

2. QMainWindow

专为主窗口设计的类,提供了标准应用程序框架,包括菜单栏(QMenuBar)、工具栏(QToolBar)、状态栏(QStatusBar)和中心部件区域。通过 setCentralWidget() 可设置核心内容。

属性:

3. QDialog

用于创建模态或非模态对话框的基类。QFileDialog(文件选择)、QMessageBox(提示框)等是其常用子类。通过 exec() 实现模态阻塞,show() 实现非模态显示。

没有特殊的属性。

4.单项目多窗口文件

在一个项目中创建多个窗口,右键项目点击添加新文件,添加新文件选择QT文件

三种窗口根据需要选择,上面三个都是对话框类型,就是初始带不带按钮,一般选第三个,什么也不带。

后面就是改文件名下一步就行

三、总结:

这一部分主要是介绍,下一节将一些用法,最好保存一下随时查看。

http://www.dtcms.com/a/294412.html

相关文章:

  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(8):自動詞 & 他動詞 「~ている」「~ておく」「~てある」
  • 疯狂星期四文案网第16天运营日记
  • vmware分配了ubuntu空间但是ubuntu没有获取
  • Python爬虫--Xpath的应用
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘jupyter’问题
  • 系统架构师:软件工程-思维导图
  • 二十二、【Linux系统防火墙管理】firewalld命令详解
  • 使用yolov10模型检测视频中出现的行人,并保存为图片
  • 电子设计大赛【C语言核心知识点】讲解
  • HF86611_VC1/HF86611Q_VC1:多通道USB HiFi音频解码器固件技术解析
  • 动态路由协议基础
  • MIT6.824 Raft算法Lab2A实验
  • 基于阿里云平台的文章评价模型训练与应用全流程指南
  • CASAIM自动蓝光检测供应商三维测量系统近线检测汽车变速箱尺寸
  • Java SE:类与对象的认识
  • 【kubernetes】-3 pod基础和yaml文件
  • 记录一本设计模式的书
  • vue3与ue5通信-工具类
  • [C/C++内存安全]_[中级]_[安全处理字符串]
  • ctfshow pwn40
  • 保护板测试仪:守护电池安全的“幕后卫士”
  • 关于SPring基础和Vue的学习
  • Docker 容器中的 HEAD 请求缺失 header?从 Content-MD5 缺失聊起
  • 超声原始数据重构成B扫成像的MATLAB实现
  • 【AI News | 20250722】每日AI进展
  • now能减少mysql的压力吗
  • 【Android】用 ViewPager2 + Fragment + TabLayout 实现标签页切换
  • linux性能调整和故障排查
  • LeetCode热题100--24. 两两交换链表中的节点--中等
  • Linux文件——Ext2文件系统(3)_软硬链接