大家好,我在QT多线程编程时,在线程内部调用了一个外部函数,外部函数中使用了emit来发送信号,请问这样是否会存在问题?另外,在线程中调用外部函数时需要注意哪些问题?
1条回答
- 孤浪 2014-11-18 04:02关注
我编写的代码大概如下:
class myThread:public QThread;
class DeviceScaner:public QObject
{
Q_OBJECTpublic:
DeviceScaner();
~DeviceScanner();
void readData();signals:
void readyRead(QString data);private:
myThread *thread;
bool run_flag;
};DeviceScanner::DeviceScanner()
{
run_flag = true;
thread = new myThread(this);
if(thread)
{
thread->start();
}
}DeviceScanner::~DeviceScanner()
{
run_flag = false;
if(thread)
{
thread->wait();
delete thread;
}
}void DeviceScaner::readData()
{
emit readyRead("Test Data");
}class myThread:public QThread
{
public:
myThread(void *param);protected:
void run();private:
void *lp;
};myThread::myThread(void *param)
{
lp = param;
}void myThread::run()
{
if(lp == NULL)
{
return;
}
DeviceScaner lpScanner = (DeviceScaner)lp;
whilt(lp->run_flag)
{
sleep(1);
lp->readData();
}
}
代码是临时敲的,可能会有错误。DeviceScanner类中的信号会连接到其它类的槽,小弟使用QT的时间不长,不知道这样的用法是否正确,有精通QT的大神还望赐教。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
- ¥15 求daily translation(DT)偏差订正方法的代码
- ¥15 js调用html页面需要隐藏某个按钮
- ¥15 ads仿真结果在圆图上是怎么读数的
- ¥20 Cotex M3的调试和程序执行方式是什么样的?
- ¥20 java项目连接sqlserver时报ssl相关错误
- ¥15 一道python难题3
- ¥15 牛顿斯科特系数表表示