当前位置: 首页 > 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.lryc.cn/news/597161.html

相关文章:

  • 开源深度学习新宠:Burn框架助您无忧高效建模
  • Django实战:Python代码规范指南
  • 开源 Arkts 鸿蒙应用 开发(九)通讯--tcp客户端
  • Neo4j如何修改用户密码?
  • Android14 锁屏密码修改为至少6位
  • ESP32-CAM实战:DIY基于OpenAI的AI视觉识别相机
  • DeepSeek Janus Pro本地部署与调用
  • Object Sense (OSE):一款从编辑器脚本发展起来的编程语言
  • 【markdown】 VSCode 使用 Markdown Preview Enhanced 插件转PDF
  • 【前端】ikun-pptx编辑器前瞻问题三: pptx的图片如何提取,并在前端渲染。
  • Android埋点实现方案深度分析
  • 模拟实现消息队列项目
  • 音视频学习(四十三):H264无损压缩
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——3. QML入门:像搭积木一样构建UI
  • ESP32-S3学习笔记<4>:I2C的应用
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_家庭维护示例(CalendarView01_31)
  • WebGIS 中常用空间数据格式
  • 2025暑期—06神经网络-常见网络3
  • 2025暑期—06神经网络-常见网络2
  • 2026 拼多多秋招内推码(提前批)
  • 为什么设置 git commit签名是公钥而不是私钥?
  • yo easy-ui5生成项目,ui5版本降级处理
  • Tang Prime 20K板I2S输入输出例程
  • Hexo - 免费搭建个人博客01 - 安装软件工具
  • Java应用程序内存占用分析
  • 大致自定义文件I/O库函数的实现详解(了解即可)
  • 软件开发、项目开发基本步骤
  • Java从入门到精通!第十二天(泛型)
  • 搭建 Android 开发环境JAVA+AS
  • 阿里云ODPS十五周年重磅升级发布:为AI而生的数据平台