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

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

    评论

报告相同问题?

悬赏问题

  • ¥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函数的问题