电子商务网站设计与管理,%2enet网站开发,shopify建站费用,wordpress改不了语言【QT5-自我学习-线程qThread移植与使用-通过代码完成自己需要功能-移植小记3】 1、前言2、实验环境3、自我总结#xff08;1#xff09;文件的编写#xff08;2#xff09;信号与槽的新理解#xff08;3#xff09;线程数据的传递 4、移植步骤第一步#xff1a;添加新文… 【QT5-自我学习-线程qThread移植与使用-通过代码完成自己需要功能-移植小记3】 1、前言2、实验环境3、自我总结1文件的编写2信号与槽的新理解3线程数据的传递 4、移植步骤第一步添加新文件第二步初始化线程与连接内容第四步编写线程文件与自定义内容第五步补充其它内容 5、实验代码-无6、细节部分1各种报错2undefined reference to。。。3缺少“Q_OBJECT”关键字 7、总结 1、前言
学习线程其实有一段时间了当时只是学习没有实际用起来最近做的一个qt程序发现如果不使用线程那么就会导致界面卡死这样才体现出线程的实际作用。
这里是第三章主要是说明如何使用移植如何嵌入到自己项目中。 并且开启本章前默认你已经至少练习了一种线程使用方式如果你练了那么移植也是非常简单。
2、实验环境
实验环境还是挺重要的因为有时候在你电脑上能运行的东西在别人的电脑就不一定能运行这一部分的原因就可能是实验版本不一样。 系统环境window环境 QT软件版本qt 5.14.2 3、自我总结
1文件的编写
移植的话如果我们想套在自己的程序上其实主要两个部分的编写更准确的是两个文件编写。 1、一部分就是线程文件对于线程文件我们需要自己知道哪里是线程需要外壳哪里是自己想要跑得程序库内容。 如下举例在run内里内容就是咱们自己移植后需要替换的内容这里需要我们自己跑自己内容。 2、另一部分就是主线程文件在本例中就是mainwindow.cpp内容里面主要是连接“connect”将函数信号槽等连接起来这样我们点击按键才会触发相应函数。
2信号与槽的新理解
这里算是我自己的一个新理解我自己在移植的时候其实在按键里写其他功能内容同样移植的时候就复制了这部分内容。但是实际调用功能时没有点击按键结果就是咋整都进不去线程。
用文字描述还是有点抽象这里如下代码举例、
.....connect(ui-pushButton,QPushButton::clicked,this,[](){//发送信号emit starting(10000);//启动线程gen-start();});
......void MainWindow::on_pushButton_clicked()
{......
}
如上如果我在主界面直接点击按键是一定可以触发函数 on_pushButton_clicked() 和 开启线程的。 因为按键会触发一个clicked信号。 但是我实际应用时也是这样写的但是我不会去点击这个按键而是使用软件代码去调用函数on_pushButton_clicked() ,这样虽然函数会执行但是不会开启线程因为没有clicked信号。
这对我这样的新手来说是一次认知小提升以前听到理论是提到信号和槽可以分开的但是用久了都是一个信号一个槽会自然认为他们是一体的没想过要看成两个独立东西。
3线程数据的传递
另外另外一点是线程之间传递数据的方式开始自己不太会的话可以使用全局变量但是按照作者的教学其实用跟简单的方式这块我着暂时没有深入更多但以后需要的话还是需要自己仔细研究下。
4、移植步骤
这里大概讲讲移植需要做的事情以供参考。
第一步添加新文件
在自己工程加入新的.cpp和.h文件 用来盛放我们自己功能函数与线程这层外壳。
第二步初始化线程与连接内容
这里主要是mainwindow.cpp内容这些函数完全可以封装一下只要是连接线程作用。
第四步编写线程文件与自定义内容
回到线程函数我们将线程内容填写完同时写好自己需要内容。 第五步补充其它内容
当然还有其它内容需要补充下比如一些包含文件一些声明等。
5、实验代码-无
本次无实验代码主要是内容讲解。
6、细节部分
自己调试过程中或者说移植过程中还是遇到了一些问题的将其记录下来。
1各种报错 当时报错的时候真是一脸懵逼完全不知道为啥看代码就定位到447行查看很久才知道AexplicitA就是自己失误打上去的后来删除后相继问题就没有真的很神奇自己都不知道咋打上去的。
2undefined reference to。。。
简单说就是没有定义fnSend这个函数这个好像和上一个问题一样的在关键文件打错了连带的后续就没有了。
3缺少“Q_OBJECT”关键字 7、总结
这样线程也可以告一段落了等使用的时候添加进来就可以。