[問題] Qt 繪圖問題

看板C_and_CPP作者 (酷~!!)時間13年前 (2010/12/04 01:02), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串3/3 (看更多)
遇到的問題: (題意請描述清楚) 函式(paintEvent)不如預期執行 => Q1. 比較不懂的是,paintEvent function是一直執行刷新嗎? (我覺得"是") Q2. 為何我呼叫 mousePressEvent 之後,paintEvent 不會一直刷新 而是要我壓了 [alt] 按鍵後,它才會有反應畫出一條線在圖案上? (這試了很久..) 希望得到的正確結果: 當我壓下按鍵(即呼叫mousePressEvent),程式會正常的畫出一條線! 程式跑出來的錯誤結果: 如同上面的 Q2 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Qt Creator 有問題的code: (請善用置底文標色功能) Painter.cpp http://paste.plurk.com/show/334254 其它code: Painter.h http://paste.plurk.com/show/334256 main.cpp http://paste.plurk.com/show/334257 補充說明: 程式執行時會畫出兩張圖片,當任意的用滑鼠點擊某張圖時: (照理說會立刻畫出一條線) 但是事實上要押了幾下(不確定幾下) [alt]鍵,過後才會出現.. (滑鼠可能也要壓幾次) 謎樣的bug,還望諸位大俠出手相助,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.2.69 ※ 編輯: iamamanguy 來自: 59.121.2.69 (12/04 01:04)

12/04 01:25, , 1F
Q1 其實「並不是」, 只有在 Qt 判斷需要更新時才會更新
12/04 01:25, 1F

12/04 01:26, , 2F
這些狀況包括手動在程式中叫它更新, 或視窗有移動等等
12/04 01:26, 2F

12/04 01:28, , 3F
這跟按 Alt 有什麼關係我就不知道了...
12/04 01:28, 3F

12/04 01:31, , 4F
查了一下, 手動要求圖形更新用 QWidget 的 repaint()
12/04 01:31, 4F

12/04 07:33, , 5F
謝謝1樓的解答! 問題已解決! 原本的code我腦殘忘記
12/04 07:33, 5F

12/04 07:34, , 6F
壓下滑鼠要讓它重新畫 哦..會失敗的原因是觀念不足
12/04 07:34, 6F

12/04 07:34, , 7F
主要是Q1。總之感謝1F!
12/04 07:34, 7F

12/04 12:39, , 8F
補充一下,用update()會比用repaint()好,update()是發送一個
12/04 12:39, 8F

12/04 12:40, , 9F
paintEvent到event queue裡;repaint()是馬上重繪
12/04 12:40, 9F
文章代碼(AID): #1C-IARnL (C_and_CPP)
文章代碼(AID): #1C-IARnL (C_and_CPP)