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

相关推荐
开始了码1 小时前
QT::对话框:消息对话框6
qt
9***P3341 小时前
Rust在网络中的Rocket
开发语言·后端·rust
大迪吃小迪1 小时前
每秒 400 请求场景下,线程池如何合理配置?
java·开发语言
xxp43212 小时前
Qt 网络编程 网络下载
网络·qt·php
Wzx1980122 小时前
go聊天室
开发语言·后端·golang
Mr_Xuhhh2 小时前
pytest -- 指定⽤例执⾏顺序
开发语言·python·pytest
F_D_Z2 小时前
【解决办法】网络训练报错AttributeError: module ‘jax.core‘ has no attribute ‘Shape‘.
开发语言·python·jax
chenyuhao20242 小时前
MySQL索引特性
开发语言·数据库·c++·后端·mysql
YY&DS2 小时前
Qt 快速搭建局域网 HTTP 下载服务(兼容 IE/Chrome/Edge/Firefox)
chrome·qt·http