关于构造函数QWidget(parent)
Widget::Widget(QWidget *parent) :QWidget(parent)例子:基类子类
结果:结论:子类构造函数指定父类的构造函数会调用父类的构造函数,若不指定,则调用父类的默认构造函数
源码:结论:如果parent参数非空的话,那么该构造函数使用了其父窗口的调色板,并且发送了QChildEvent事件,这会让新的窗口成为parent所指窗口的子窗口,那么当父窗口被删除时,子窗口也会自动的被删除。
Qt文件相关(File)
1.QFile File(QDir::currentPath()+"/../Config/IDExpert.config");使用绝对路径或相对路径(注意当前路径为exe文件路径还是该文件路径)
Qt对于/和\都可以识别
2.使用QDomDocument读取xml文件的两种方式
3.用户选择特定文件QFileDialogQString QFileDialog::getOpenFileName(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = nullptr,Options options = 0);
4.QDomElement继承QDomNode元素、文本、注释三者有所区别为元素结点为文本节点为注释结点
5.例:<s ...
QThread用法
QThread使用的两种方法1.moveToThread()——为QObject的公有方法
继承QObject的类可使用该函数,移入新线程,经检测与创建该类的类的线程不一样
2.重写run函数
quit与exit: quit()是一个公共槽函数,可以通过信号-槽机制来触发线程退出。 当您调用quit()时,它会发送一个QThread::finished信号,这会导致线程结束执行并退出。 quit()通常与start()一起使用,以在需要时请求线程退出。
exit()用于立即终止线程的执行,不等待线程完成当前任务或清理操作,这可能导致资源泄漏或数据不一致。 exit()不会触发QThread::finished信号。
通常情况下,建议使用quit()来请求线程退出,因为它更安全,允许线程完成当前任务和执行必要的清理操作。exit()方法应该只在特殊情况下使用,例如在应用程序退出时,当您确定不需要等待线程完成,或者当您需要强制终止线程时。
QObject、Qt元对象系统、对象树、属性系统
1.RTTI机制由于C++是静态类型语言,有关类的信息只在编译期被使用,编译后就不再保留,因此程序运行时无法获取类的信息。这时就需要使用「运行期类型信息」,即RTTI(Run-Time Type Information)。一般拥有程序运行时保存对象类型信息能力的语言,我们就称该语言支持RTTI。C++标准定义了dynamic_cast和typeid两个关键字用于支持RTTI机制。
dynamic_cast的作用是将指向基类对象的指针转换为指向派生类对象的指针,如果转换失败则返回NULL。因此,dynamic_cast唯一的功能就是判断一个对象具有哪些类型。例如有4个类GrandFather、Father、Son和GrandSon,右边的类分别是左边类的派生类。此时有一个类型为GrandFather *的指针p,为了判断p所指对象是否具有Son的类型,可以使用语句Son *son = dynamic_cast<Son*>(p)。如果返回的son不为NULL,则p所指的对象具有Son类型。同理我们也可以得到该对象是否具有Father、GrandSon类型,
但是仅仅知道这些是不 ...
Qt信号与槽
1.传统写法SIGNAL(f(int ))SLOT(g(int ))此写法只是简单的字符串匹配,信号和槽的参数类型在字符串上必须是一致的。所以该写法不能适配typdef与namespace以及兼容类型的参数。
2.写法1的扩展
connect为qobject的函数
3.以指针形式指定
此时会有一个问题:若函数发生重载,无法指定唯一的函数解决:使用函数指针简化版:static_cast<(void)(&B::*)(int)>(&B::fun)
Qt项目的构建与编译
pro文件:包含内容为项目整体所依赖的库,项目构建方式,项目包含的头文件和源文件等。
qmake:qmake是Qt公司制造专门生成Qt专用makefile文件的项目管理工具。因为项目编译前会调用Qt专有的moc(The Meta-Object Compiler)编译器和uic(User Interface Complier)编译器对Qt源文件进行预处理,所以需要专门的工具来生成Qt风格的makefile文件。注:执行qmake会更新makefile文件
MinGW:是一套用于Windows平台的自由开源软件开发工具集合。包含GCC编译器用于编译C、C++文件,包含GNU Make工具用于自动化构建过程,还包含调试器(GDB)等。我们使用它的GNU Make工具来对makefile文件进行编译。
makefile文件:当包含多个源文件时,使用gcc命令逐个去编译会导致工作量很大,所以需要一个文件包含编译指令。这个Makefile文件包含了编译、链接等构建规则的信息,make工具根据makefile中的命令进行编译和链接,makefile命令中包含了gcc去编译某个源文件的命令。
make ...
connect函数的lamda表达式
从左到右各个符号的含义:
测试:显示,信号参数与lamda表达式中的()内参数需一致,若填写不一致,则会报错。()内参数也可不填写
QTitan中MVC小结
研究了QTitan中的Grid例子,自己也写了自己的demo,写写对其中代码编写的理解。
MVC是什么?MVC是一种软件设计模式,用于组织和管理应用程序的代码。它代表Model-View-Controller(模型-视图-控制器)模式,是一种将应用程序分成三个主要组成部分的方法,每个部分都有不同的责任和任务。这种分层方法有助于提高应用程序的可维护性、可扩展性和可重用性。
简单来说,model相当于是一个在后台负责整理数据逻辑组织方式的一个进程,例如Tree的组织结构,model就为我们把Tree的结点内容、父子节点关系等等给串联起来。controller属于一个中转程序,它是model和view之间的一个桥梁,model有更新会通过controller处理,再通知view进行更新,之前不是很理解为什么要有这一层,因为直接model与view互动就行了呀,感觉这样太麻烦。当然,如果只是很简单的model&view感觉直接传递好像也没什么,但是当model与view互动多了,就会出现很多的问题,例如view的异常操作、view或model要与其他的类进行关联等等,这时你会发现由于m ...
Qt的Pro文件小结
写一些Qt里pro文件相关知识,喜欢的小伙伴可以点点赞哦
QT += 表示项目使用的模块,gui表示使用Qt的GUI部分功能,network表示使用Qt的网络部分功能
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 表示若目前Qt版本大于4,则增加widgets模块
CONFIG关键字CONFIG += c++17表示该项目将使用 C++17 标准进行编译。
CONFIG += debug或release或release_and_debug表示指定编译配置是Debug模式还是Release模式。
CONFIG += console表示项目是一个控制台应用程序
CONFIG +=shared或static表示指定生成动态链接库(shared)还是静态链接库(static)
CONFIG += thread,支持线程,当 CONFIG 参数包含 qt 的时候,这个是默认支持的
向项目中添加文件SOURCES += 、HEADERS += 、FORMS ...
