2 jjy201 jjy201 于 2014.11.18 11:57 提问

QT线程内调用外部函数发送信号是否有正确?多线程调用外部函数需要注意哪些问题?

大家好,我在QT多线程编程时,在线程内部调用了一个外部函数,外部函数中使用了emit来发送信号,请问这样是否会存在问题?另外,在线程中调用外部函数时需要注意哪些问题?

1个回答

jjy201
jjy201   2014.11.18 12:02

我编写的代码大概如下:
class myThread:public QThread;
class DeviceScaner:public QObject
{
Q_OBJECT

public:
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的大神还望赐教。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!