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

相关推荐
徐先生 @_@|||27 分钟前
(Wheel 格式) Python 的标准分发格式的生成规则规范
开发语言·python
利剑 -~30 分钟前
jdk源码解析
java·开发语言
Predestination王瀞潞36 分钟前
JDK安装及环境变量配置
java·linux·开发语言
lsx20240641 分钟前
Python break 语句详解
开发语言
hmbbcsm42 分钟前
python做题小记(八)
开发语言·c++·算法
wyzqhhhh1 小时前
京东啊啊啊啊啊
开发语言·前端·javascript
JIngJaneIL1 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
雷中听风1 小时前
使用字节的源安装rust
开发语言·后端·rust
特立独行的猫a2 小时前
C++开发中的Pimpl机制与类声明机制深度解析:现代C++的编译解耦艺术
开发语言·c++·pimpl