解决方案:去掉全局包含,原因分析:双击查看找不到的头文模州件,发现是旦如include<SearchEdit.h>,这里注意,include<>这种方式头文件不是从当前项目去查找头文件,而是从QT的include头文件去找,这当然找不到,所以我手动改为include"SearchEdit.h",运行确实没问题了,但是这个ui文件是qt自动生成的,我改动界面的时候,这个编译器又把我之前修改的文件给还原了
既然不能修改这,那只能修改模码启界面了,在界面找找有没有关于头文件包含的选项,仔细查找,果然有:我把这里的全局包含去掉,include<SearchEdit.h>就变成include"SearchEdit.h"了,也就不会报错了
QT线程是独立的类:在QT中添加C++类,头文件引用#include <QThread>类公开,这样写:
class XXXX:public QThread,类里面申明Q_OBJECT,直接写在里面。signals: XXX()这是你的订阅事件名。private:void run()这是run函数;public: int cona=3这是变量,祥灶基一定要public。
cpp文件里引用头文件,run函数里面写方法:
void XXXX::run()
{
do
{
msleep(cona)
emit connec()
}while(true)
}
上面就是线程类了。现在我们在窗体中应用,先在头文件申明
头文件private: XXXX *thread1XXXX *thread2
构造函数中初始化他们
thread1=new XXXX()
thread1->cona=3
QObject::connect(thread1,SIGNAL(connec()),this,SLOT(XXX信号1()))
thread2=new XXXX()
thread2->cona=4
QObject::connect(thread2,SIGNAL(connec()),this,SLOT(XXX信号2()))
XXX信号1()是读A数据,XXX信号2()读B数据。
按钮1的信号槽里写方法同时进行每3秒读A、没4秒读B
thread1->start()
thread2->start()
要结束谁就用 xxxx->terminate()
看明白没?QT可不同与C++,你不熟悉编程辩橡环境,是很难谨谨理解的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)