QT:基础概念操作

文章目录

我们在构造中写入label,可以用对象树方式创建。栈的方式不能进行文本构造,因为调用析构

这里不用对象树delete,不用担心内存泄漏,因为他在对象树上

这样的好处可以统一释放所有的对象。

不能Lable label 之间构造,因为调用了析构

乱码

乱码是编码方式不匹配

表示汉字的字符集有很多,不统一,

最常用有两种方式

1GBK---2个字节表示一个汉字

2utf8-----2-4个字节,一般是三个字节

这里是3,linux默认使用utf-8

字符串和控制台的编码方式不一样

这里可以使用Qstring进行处理,打印日志可以用qDebug

推荐用new方法堆的方式创建对象

统一释放对象,构造函数中指定父对象,这样才会挂到对象树上

没挂对象树要手动释放

按钮方式实现

使用编辑框来完成hello world

代码方式

按钮和信号槽

点击可以执行处理函数


指定的obectName的名字是唯一的,这个名字就是buttton名字

命名

用下划线划分不同单词

unordered_map

priority_queue

大写字母分隔

studentCount---小驼峰--变量/函数

QApplication---大驼峰---类命名

查询文档

光标放到文字上面直接按f1

也有安装的QTAssistant和linux中man 查手册差不多

QT的坐标体系

我们从小都学过平面直角坐标系,QT类似但是不一样

(0,0)处就是屏幕的左上角

子控件是基于父控件的坐标点来进行操作的,没有父元素的在桌面

move函数可以移动控件的位置move的参数是像素

move(200,300)就是水平移动200,垂直移动300.

this.move()也可以移动wegit

信号和槽

linux的信号是系统内部的通知的机制,进程之间的通信方式

信号源:谁发的信号

信号的类型:哪种类别的信号

信号的处理方式:注册信号的处理函数,触发时候自动调用

QT中的信号:

所谓的槽函数是回调函数,一个信号和一个槽关联起来

37

QWidget(控件)有许多子类QPushButton.QlineEdit...

QObject 是QWidget的类

connect

有五个参数,最后一个有默认

前四个参数分别是信号哪个空间发出,信号类型,哪个对象负责处理,该怎么处理

wiget->Qwiget->QObject

信号就是某些类它提供的成员函数

上面是solt函数,下面是信号

第二个参数必须是第一个对象的函数或父类的函数

同理第三个参数和第一个一样

第四个参数原理和第二个一样,要是slot函数

至于何种类有何种槽函数和操作函数就要查文档

也可以查看父类,和父父类

QAbstract

这里就是父类QAbstrct的信号

这里char 就是char,&函数()有不同类型,比如void ( )(), bool (*)()

在c++中不允许的,原本的connet要使用signal和slot宏来转换成char *()类型

QT5之后进行简化了,connect进行了重载,变成了泛型参数

这里带入参数检查的功能

自定义槽

我们如果不想用类中的方法,那么我们可以自定义槽函数

那么我们要在wegit类里自定义一个槽方法

以前必须放在public slots里,现在可以归结到一个public里

ui->pushbutton可以连接自己QTdesiner设计的按钮


这里就有clicked,点击可以直接生成定义和实现

这种实现方法是通过函数名触发的,可以跟connect效果一样,QT自动把信号和槽建立联系。
如果声明修改,无法匹配之后会提示:

自定义信号

槽函数的定义很常见

自定义信号很少见,QT内置的信号已经可以覆盖大部分场景

信号是一个特殊的函数

程序员只要写出声明,编译过程中定义自动生成,程序员不能干预

1返回值必须是void

2没有参数也可以,支持重载

要在类中signals: 编写,和槽函数不同

但是我们连接之后要发出信号用emit 信号函数();

我们可以在构造中emit 也可以在某一个槽函数中emit

相关推荐
天“码”行空18 分钟前
java面向对象的三大特性之一多态
java·开发语言·jvm
odoo中国1 小时前
Odoo 19 模块结构概述
开发语言·python·module·odoo·核心组件·py文件按
代码N年归来仍是新手村成员2 小时前
【Java转Go】即时通信系统代码分析(一)基础Server 构建
java·开发语言·golang
Z1Jxxx2 小时前
01序列01序列
开发语言·c++·算法
沐知全栈开发3 小时前
C语言中的强制类型转换
开发语言
关于不上作者榜就原神启动那件事3 小时前
Java中大量数据Excel导入导出的实现方案
java·开发语言·excel
坚定学代码3 小时前
基于观察者模式的ISO C++信号槽实现
开发语言·c++·观察者模式·ai
Wang's Blog3 小时前
Nodejs-HardCore: Buffer操作、Base64编码与zlib压缩实战
开发语言·nodejs
csbysj20203 小时前
C# 集合(Collection)
开发语言
csbysj20204 小时前
Lua 面向对象编程
开发语言