当前位置: 代码迷 >> QT开发 >> Qt有没有中断?Qt多线程如何实现
  详细解决方案

Qt有没有中断?Qt多线程如何实现

热度:20   发布时间:2016-04-25 04:34:37.0
Qt有没有中断?Qt多线程怎么实现?
请高手讲解个大概思路,谢谢

------解决方案--------------------
你說的中斷是指從主線程中斷其他的線程嗎?
可以從主線程發出signal給其他的線程
要求他們中斷,advanced Qt programming上有範例
一個簡單的例子,不保證可以跑

副線程


然後將主線程的signal連接到副線程的slot就好

ps : 我只是個初學者,會提起翻這本書是因為他的model/view講得最詳細
------解决方案--------------------
補上程式碼
C/C++ code
class heavyJob : public QThread{  Q_OBJECT    public:    heavyJob() : stop_(false) {}    heabyJob(heavyJob const&) = delete;    heavyJob& operator=(heavyJob const&) = delete;  public slots:    void setStop(bool stop) { stop_ = stop; }   protected :    void run()    {      for(....)       {        if(stop_) return;      }    }  private:    volatile bool stop_;}
------解决方案--------------------
在run()里面调用QThread::exec();进行线程的事件循环。start之后会进入run(),然后创建一个对象,并将对象moveToThread 或者你直接在run中创建对象,并进行信号与槽关联, 在主线程发送信号,槽函数将在次线程执行。
------解决方案--------------------
過去在用Qt寫線程的時候有個常犯的錯誤就是在QThread中呼叫moveToThread

下篇有很詳細的解釋
http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/
  相关解决方案