Re: [問題] Qt使用signal與slot

看板C_and_CPP (C/C++)作者 (嗶一聲之後)時間11年前 (2015/05/08 13:22), 11年前編輯推噓0(006)
留言6則, 2人參與, 最新討論串3/3 (看更多)

05/08 12:27,
你說的部分是我另外確認連線用的
05/08 12:27

05/08 12:29,
因為我是希望用可以直接在button click內就檢查出是否
05/08 12:29

連線完成 然後再依序做其它事
如果要在 button click 內就檢查完成,可以用 QEventLoop http://doc.qt.io/qt-4.8/qeventloop.html t->connectToHost("ptt.cc", 23); QEventLoop loop; connect(t, SIGNAL(sockConnected()), &loop, SLOT(quit())); loop.exec(QEventLoop::AllEvents); // wait here... // connected // do what you want here 連線尚未完前都會停在 loop.exec 這行 QEventLoop::AllEvents 是為了不讓 UI 凍結 避免讓使用者以為當掉了 完成後,會呼叫 loop quit() 繼續往下執行 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.246.2.21 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1431062565.A.251.html ※ 編輯: peder (111.246.2.21), 05/08/2015 13:39:03

05/08 18:02, , 1F
如果你上面寫在 UI thread 還是會 freeze, 請盡量不要
05/08 18:02, 1F

05/08 20:06, , 2F
那可以請問一下 有沒有其它較好的做法?
05/08 20:06, 2F

05/08 20:06, , 3F
我有試過這個方法,並不會讓 UI 凍結啊?
05/08 20:06, 3F

05/08 23:06, , 4F
感覺沒有 freeze, 但你在 UI 做很多事情都不會有反應
05/08 23:06, 4F

05/08 23:07, , 5F
總之有 async API 就用, 不要硬把它搞成 synchronous
05/08 23:07, 5F

05/08 23:10, , 6F
這裡有一些討論 https://forum.qt.io/topic/20002
05/08 23:10, 6F
文章代碼(AID): #1LJ4Wb9H (C_and_CPP)
文章代碼(AID): #1LJ4Wb9H (C_and_CPP)