Re: [問題] QT 語法的問題

看板C_and_CPP作者 (CA)時間15年前 (2010/11/23 18:15), 編輯推噓5(5015)
留言20則, 4人參與, 最新討論串3/3 (看更多)
※ 引述《stanely321 (沒有心情的心情)》之銘言: : 當我接收到來自internet的訊息時會有一個function被執行,這個function我稱它 : calldraw() : calldraw做的事很容易,就是使用一個mainwindows *p,去呼叫 _draw(),所以就是 : p->_draw(); 其中p是一個global 的point,它在mainwindows的建構子中用p=this; : 儲存了物件位址。 : _draw()內容如下 : { : psubwindows = new subwindows; : psubwindows->show(); : } : 這樣的寫法compile可以過,所以此程式可執行,但執行的結果是 : QPixmap: It is not to use pixmaps outside the GUI thread : test: Fatal IO error: client killed 因為 GUI 的操作只能在 main-loop (也就是它說的 GUI thread) 派發 但是你可以利用 signal/slot 來通知 GUI thread 比較簡單的方法可能是 void calldraw() { QTimer::singleShot( 0, p, SLOT( somethingYouWant() ) ); } 建立一個立即觸發的 timer 去觸發 slots 然後所有 GUI 的操作都由 mainwindow 的 slots 完成 可以試試看還會不會有錯誤 -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.49.238

11/23 19:04, , 1F
試過了、不過有錯誤訊息,然後程式沒當掉可是也沒劃出
11/23 19:04, 1F

11/23 19:04, , 2F
我想要的視窗,錯誤訊息如下:
11/23 19:04, 2F

11/23 19:04, , 3F
QObject::startTimer: QTimer can only be used with
11/23 19:04, 3F

11/23 19:05, , 4F
threads started with QThread
11/23 19:05, 4F

11/23 19:06, , 5F
很謝謝你的幫忙,如果有新的想法、還請不吝提供。
11/23 19:06, 5F

11/23 19:20, , 6F
更正一下、因為我在第一個para中填了數字,才會這樣
11/23 19:20, 6F

11/23 19:20, , 7F
若按照您的方式填入0,則一樣不成功,但錯誤訊息是
11/23 19:20, 7F

11/23 19:21, , 8F
QMetaObject::invokeMethod: No such method obj::
11/23 19:21, 8F

11/23 19:21, , 9F
member function
11/23 19:21, 9F

11/23 19:30, , 10F
well, 那就從 QApplication 下手吧 ...
11/23 19:30, 10F

11/23 19:31, , 11F
繼承它,把 calldraw() 宣告為 static member
11/23 19:31, 11F

11/23 19:32, , 12F
在裡面 emit qApp->yourSignal();
11/23 19:32, 12F

11/24 00:07, , 13F
請問是誰繼承誰?
11/24 00:07, 13F

11/24 00:08, , 14F
題外話、今天找書、天瓏沒有QT的書,其它也都沒有...
11/24 00:08, 14F

11/24 00:09, , 15F
class MyApp : public QApplication {};
11/24 00:09, 15F

11/24 01:57, , 16F
英文書可以嗎?
11/24 01:57, 16F

11/24 09:14, , 17F
我有電子書、不過我的問題是QT經驗問題,所以想找實戰
11/24 09:14, 17F

11/24 09:14, , 18F
類的書。可以汲取一些經驗,不用自己花時間累積。
11/24 09:14, 18F

11/24 15:50, , 19F
官方推薦的那本還滿實戰的 (我覺得啦)
11/24 15:50, 19F

11/24 15:56, , 20F
這個問題解掉了,晚一點下班後再來PO解法。
11/24 15:56, 20F
文章代碼(AID): #1CwvGmzu (C_and_CPP)
文章代碼(AID): #1CwvGmzu (C_and_CPP)