大家好,我在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 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥85 maple软件,solve求反函数,出现rootof怎么办?
- ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥15 maple软件,用solve求反函数出现rootof,怎么办?
- ¥65 汇编语言除法溢出问题
- ¥15 Visual Studio问题
- ¥20 求一个html代码,有偿
- ¥100 关于使用MATLAB中copularnd函数的问题