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

QT初始(1)

一、认识QT的一些初始代码

1. Q_OBJECT
如果类要使用信号槽,就需要引入这个

2. Widget(QWidget *parent = nullptr);

这个是引入对象树的概念,即创建的 Qt 对象可以通过绑定父节点,从而加入对象树

3. Ui::Widget *ui这个则是和form file密切相关的,也就是可视化界面代码的桥梁。

4. ui->setupUi(this);设计文件准备好的界面,真正地“组装”并显示在窗口上。

1.对象树

对象树负责把内容组织起来,然后在合适的时机(如窗口关闭)将对象统一释放。因此推荐使用来开辟空间;如果放在上,对应的枝干可能会提前释放,导致界面中该控件消失

要点:

  1. 只有继承QObject的类才能加入对象树。

  2. 只有当对象需要被管理的时候,才应挂到对象树上。

  3. 父对象被销毁时,它会自动销毁其所有子对象(通过析构函数实现),无需手动释放。

2.字符集

Qt中如果使用cout的方式打印中文,大概率会出现乱码(因为cout默认使用本地编码,如 Windows 下GBK,Linux 下UTF-8;而 Qt 内部为 Unicode),因此可以采取 qDebug来代替cout

二、信号槽和ui的简单了解

2.1 信号槽

1.介绍

通过connect函数,可将一个对象发出的信号(如按钮的点击事件)与另一个对象的槽函数(即普通成员函数)关联起来。当用户触发该事件(如点击按钮)时,对应的槽函数会被自动调用执行。

// bool QObject::connect(const QObject *sender, PointerToMemberFunction signal, // const QObject *receiver, PointerToMemberFunction method); // 功能:将一个对象发出的信号连接到另一个对象的槽函数(或信号),实现对象间通信 #include <QObject> #include <QDebug> // 参数说明: // • sender :发出信号的对象指针(必须继承自 QObject) // • signal :指向成员函数的指针,表示信号 // • receiver :接收信号并执行槽的对象指针 // • method :指向成员函数的指针,表示槽(或另一个信号) // 返回值: // • 成功连接返回 true,失败返回 false

注意:

信号必须由发送对象所属类定义,槽通常作为接收对象的成员函数实现。例如,若使用一个按钮对象(如QPushButton),则其发出的信号(如clicked())只能是该按钮类及其父类所声明的信号;若槽函数属于主窗口(“桌面对象”),则该槽是窗口类的方法。

2.2 ui了解

在使用 Qt Designer 创建 UI 界面时,每个控件都会被赋予一个objectName属性。当.ui文件被编译为 Python 代码后,生成的 UI 类会将控件以该objectName作为实例属性名,从而允许在代码中通过ui.objectName的方式直接访问对应控件

三、QT坐标系

1.坐标种类

  • 数学坐标系(通常为右手坐标系):原点位于图形或空间的中心,x 轴向右为正,y 轴向上为正

  • 计算机图形坐标系(通常为左手坐标系):原点位于父窗口或画布的左上角x 轴向右为正,y 轴向下为正

2.move函数

#include <QWidget> // void QWidget::move( // int x, // int y // ); // 功能: // 将窗口部件(widget)移动到其父窗口或屏幕坐标系中的指定位置 // 对于顶层窗口(无父窗口),坐标相对于屏幕左上角 // 对于子窗口部件,坐标相对于父窗口部件的客户区左上角 // 参数说明: // int x: // 新的 x 坐标(水平位置) // int y: // 新的 y 坐标(垂直位置)

四、信号(上)

1.信号三要素

  • 信号源(Sender):发出信号的控件或对象;

  • 信号类型(Signal):由特定用户操作或状态变化触发的、对象所支持的具体信号。

  • 信号处理方式(Slot):用于响应信号的可调用对象(通常为函数或方法),本质上是一种回调机制。

2.槽和信号的图标

  • 信号

3.自定义槽

  • 自定义槽在 Qt5 及之后版本中本质上就是普通函数或方法,无需特殊语法;但在 Qt4 及更早版本中,必须将槽显式声明在public slots:protected slots:private slots:区域中,否则无法被元对象系统识别。

  • 若槽函数采用命名规范on_<对象名>_<信号名>(),且对应的控件已通过setObjectName()设置了匹配的对象名,则可以借助QMetaObject::connectSlotsByName()实现自动连接,无需手动调用connect()

4.自定义信号

  • 信号在语法上类似于函数声明,但其本质并非普通函数;它必须在类的signals:(Qt5 起)或Q_SIGNALS:(兼容宏)访问控制段中声明,才能被 Qt 的元对象编译器识别为信号

  • 信号的返回值必须为void,可带有参数,且支持重载

  • connect()的作用只是建立信号与槽之间的连接关系,它本身不会执行槽函数只有当信号被实际发射(emit)时,已连接的槽才会被调用。

  • 不过Qt5可以不写emit,因为全都装在信号函数里面了,但是为了可读性还是建议写。

  • 然后如果信号充当槽,那么相当于emit 这个信号(不管是内置还是自定义的)。

五、信号(下)

1.参数

  • 自定义信号和槽都可以携带参数,声明的时候可以不携带参数名,C++的规则

  • 在连接时,槽的参数个数不能多于信号的参数个数

  • 内置的信号有的也会携带参数,但是不是由我们传递。

2.信号槽的意义

信号与槽的解耦设计,核心目的是实现对象间的松耦合通信,并天然支持以下关系:

  • 一对多:一个信号可连接多个槽(广播事件);

  • 多对一:多个信号可连接同一个槽(统一处理);

  • 多对多:复杂场景下任意组合(如多个发送者触发多个接收者的不同响应)。

3.disconnect

  • 作用:取消信号和槽的关系

  • 参数:和connect一样

4.lambda表达式

  • 格式:【捕获列表】(函数参数){函数体}

  • 【】:里面放要捕获的变量,如果是=则捕获上一层作用域的所有变量,&则是在=的基础上捕获所用变量的引用(Qt不推荐)

六、QT安装包

链接:https://pan.baidu.com/s/1pwrYhDxSrjTa7GAQ9_NOQg

提取码:bite

http://www.rkmt.cn/news/1497495.html

相关文章:

  • 西双版纳傣族自治州2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 三大殿
  • 2026武汉网站建设、网站设计、小程序制作公司推荐榜单 - 奔跑123
  • 2026年6月变频器厂家TOP5综合评测:技术、选型与标杆企业全解析
  • N8N 工作流使用中转API 教程
  • 独立开发者最值钱的资产,是 1000 个忠实用户
  • 襄阳市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 三大殿
  • 116、飞控中的状态机设计模式
  • 2026年最新5个免费字体下载网站合集,设计师速速收藏!
  • AI时代普通人如何玩转企业级开发V2.0
  • 蚌埠市2026最新黄金回收+白银回收+铂金回收店铺门店权威榜单TOP1~5家推荐地址电话 - 三大殿
  • 2026西安黄金回收避雷红黑榜:内行人深扒套路,怎么选才不踩坑? - 西安闲转记
  • LPC3141/3143嵌入式开发实战:ARM9核心、USB OTG与安全启动解析
  • 营口市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 三大殿
  • 吃透 Pro*C 国产化:从环境适配到业务落地全流程
  • 2026招聘求职类小程序开发制作公司有哪些? - 奔跑123
  • 百度内部启动青木、风雷两大计划,百度大动作该咋看?
  • Qt 高阶 08|Qt 插件开发 接口设计、插件编写、动态加载插件
  • 菏泽市2026最新黄金回收+白银回收+铂金回收店铺门店权威榜单TOP1~5家推荐地址电话 - 三大殿
  • 别再手动调参了!用PyTorch Lightning的ModelCheckpoint和EarlyStopping解放你的双手
  • Mac剪贴板革命:灵剪Cliperx重塑高效工作流
  • 舟山市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 三大殿
  • OpenHarmony南向开发实战:用逻辑分析仪调试Hi3861与DHT11的通信时序
  • 衡水市2026最新黄金回收+白银回收+铂金回收店铺门店权威榜单TOP1~5家推荐地址电话 - 三大殿
  • STL源码解析之list(1)
  • OEXN:“太空上市预期持续升温”
  • 从RTL代码到GDSII流片:一个真实小模块的Synopsys工具链实战踩坑记录
  • 别再只背公式了!用‘小学生也能懂’的比喻,彻底搞懂RSA低加密指数攻击为什么危险
  • 从热水器到充电桩:手把手教你根据电器功率算清空开型号(C32/C40/Dxx详解)
  • 03-状态管理与路由——05-React Router 基础配置
  • 别再被虚线框困扰了!手把手教你用Visio+pdfcrop+Acrobat DC搞定LaTeX插图阴影问题