最近需要在GUI程序中执行一个无限循环(当然在特定情况下会终止的),于是就考虑到了使用多线程。因为是个业余爱好者加上之前也没有这方面的知识,于是在使用的过程中遇到了很多问题……
对于这段代码先做了一些小测试:
1.直接把这个死循环放到MainWindow的函数中执行(比如构造函数),结果界面卡住(窗口始终不显示)
2.把循环放到QThread的run()中,MainWindow中启动这个thread,界面正常,循环执行正常,但是考虑到可能需要信号和槽,而exec()又没法启动,所以很纠结……
3.经过搜索了解到可以将代码放到QObject子类中,将这个object进行moveToThread。于是将循环放入QObject子类的函数中,MainWindow中实例化这个Object和一个QThread,Object进行moveToThread,启动thread,启动循环,结果效果跟1一样,界面卡住,不是期望的效果……
最后倾向于使用类似于3的方法,但是并没有达到期望的效果,所以……是哪个地方的问题呢……?