孤浪 2014-11-18 03:57 采纳率: 0%
浏览 2791

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

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

  • 写回答

1条回答

  • 孤浪 2014-11-18 04: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的大神还望赐教。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!