QT
夏目知秋
当云笔记用吧 用U盘存太麻烦了
展开
-
QT的TCP连接功能概述
QT 的TCP自带函数库,使用起来和WinSock差不多。原创 2022-11-24 16:40:17 · 3536 阅读 · 1 评论 -
何为智能指针以及QT中的智能指针
*强指针和弱指针:**以上问题引出了强指针和弱指针的概念。**环形引用问题:**但是若对象A与对象B相互引用,想要删除这两个对象时会出现问题,删除A的时候发现被B引用无法删除,删除B的时候发现被A引用无法删除。**目的:**对于指针的使用中有两个导致软件崩溃的问题,一是忘记释放动态申请的内存,二是指针指向的内存被释放,为了解决这个问题,出现了智能指针。特性:强指针,引用计数型的智能指针,可以被自由地拷贝和赋值,在任意的地方共享它,当没有代码使用(引用计数为0)它时才删除指向的对象。原创 2022-11-22 13:54:33 · 638 阅读 · 0 评论 -
QT跨线程信号槽无响应的原因解析
信号槽无法触发的原因,无非就就下面几种:1.忘记连接信号槽,这种错误十分低级,排查难度一颗星;2.信号槽中使用了自定义参数(此处应该注意自定义参数是包括数组的,本人在此处吃过一次亏,浪费了半天时间排查),但是没有注册过,应该在开头使用qRegisterMetaType<Mytype>("Mytype");注册,排查难度两颗星;3.实际槽运行的线程资源被占用,或者是槽所在的对象正在其他的槽响应过程中,这个问题需要带调试排查,排查难度三颗星。第3点在线程架构设计的时候就需要考虑到这个问题,尽原创 2021-10-09 16:53:30 · 5484 阅读 · 3 评论 -
QT中线程新建方式的区别以及实际使用建议
QT多线程使用方式中常用的是方式一:继承QThread,重写run函数,使用start函数开始;方式二:继承QObject,新建QThread对象thread,使用QObject的moveToThread函数将QObject运行在thread中,使用start函数开始。区别是什么?跨线程使用信号槽时,根据线程使用方式和信号槽连接方式的不同,实际槽所运行的位置也不一样,结论如下:使用方式一,实际此线程的槽函数根据连接时所选择的连接方式1.QueueConnection方式 运行在创建此QThrea原创 2021-10-09 16:41:03 · 1495 阅读 · 2 评论 -
什么时候需要初始化列表?
在刚接触QT的时候我们都会看到自动生成的主界面构造函数如下:MainWidget::MainWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MainWidget){}这边使用的就是初始化列表,初始化列表主要用于以下几种情况:第一种:类B中包含另一个类A的对象a,但是类A的构造函数含有参数例如A(int x),那么当类B初始化时,若没有初始化列表,无法正常初始化B,正确做法是将B的构造函数写为B():a(x)。代码如原创 2020-11-27 13:55:35 · 1794 阅读 · 1 评论 -
QT中新建线程的几种方法
QT新建线程的几种方法:1.继承Qthread新建一个类,重写run方法,此方法除run之外,其他的都还是在主线程中运行;2.使用moveToThread将新建线程转移到继承QObject的新类实例中;方法1:1.新建一个类WorkThread,基类为QThread。2.重写类WorkThread的虚函数void run();,即新建一个函数protected void run(),然后...原创 2019-03-06 17:16:20 · 22637 阅读 · 0 评论 -
QT中子线程与主线程通讯的方法
子线程可以通过信号量与槽来传递数据给主线程,让主线程更新,下面是一个最简单的例子,界面中只有一个label,主线程中通过movetothread的方法创建了一个子线程,然后子线程中不断触发showNum信号让主线程调用DisplayMsg来更新label。头文件:class MainWindow : public QMainWindow{ Q_OBJECTpublic: ...原创 2019-03-06 18:51:01 · 8805 阅读 · 6 评论 -
回调函数的意义
一个工程需要甲乙两个人一起完成:甲方:正常工作需要ABC三个模块,A、C模块我都有,我需要一个B,而且我对B是有要求的;乙方:我正好有B,你看行不行,你需要的时候我把B模块的密钥告诉你。上文中的B就是回调函数,甲方规定了回调函数的格式,乙方负责根据格式和项目要求去送给甲方不同的B(回调函数),通常乙方都会通过将自己所拥有的B的密钥送给甲来实现(即函数指针)。为什么要使用这样一个机制呢?可能...原创 2019-03-07 00:27:52 · 1665 阅读 · 0 评论 -
QT中菜单和工具栏的使用
如下图是一个工具栏和菜单栏的简单示意,“文件”“帮助”所在的地方称作菜单栏,“囧”所在的地方称作工具栏,那么在QT中怎么实现他们呢?打开QT Designer可以看到编译器已经给我们提供了一个框架,在窗口标题的下面有一个"在这里输入"提示,双击它输入一个名字就可以得到一个新的菜单项:创建完菜单项以后,我们需要添加菜单下面的子项,这个时候就需要用到一个QT的一个功能叫action,对于他的更...原创 2019-03-16 16:33:54 · 3813 阅读 · 4 评论