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

相关推荐
用户805533698033 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner3 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz8 天前
QML Hello World 入门示例
qt
xcyxiner11 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner11 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner12 天前
DicomViewer (添加模型类)3
qt
xcyxiner12 天前
DicomViewer (目录调整) 2
qt
xcyxiner12 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00614 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术14 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript