mattatlantis 寫:因為Qpainter離開Qpainterevent後就無法運作了
常見的做法是集中所有的繪圖工作寫在 paintEvent() 裡,如果在其它函式更新了東西就用 QWidget::update() 來更新。QWidget::update() 會發一個 QPaintEvent,paintEvent() 收到後就開始畫。
mattatlantis 寫:我有個2維圖形,然後有左右移動的游標,我想按下按鈕後然後在游標的標示位置上,在原本的2維圖形上畫個圖示作標記
如果我來寫,我會先在 mouseReleaseEvent() 裡找出座標,如果是在左右移動的游標上,用一個 bool moveRightClicked 或 bool moveLeftClicked 設成 true,然後叫 update()。在 paintEvent() 裡
- 代碼: 選擇全部
if (moveRightClicked)
myDrawMark(x1, y1);
if (moveLeftClicked)
myDrawMark(x2, y2);
當然方法不只一種,也可以寫成在 mousePressEvent() 設 bool changeRightArrow 或 changeLeftArrow 為 true,然後在 mouseReleaseEvent() 裡設 false。在 paintEvent() 裡如果 changeRightArrow 或 changeLeftArrow == true,對游標做改變。這就達到了按鈕的效果。