請問如何按一下按鈕,然後用QPainter畫出一個圖

喜歡程式設計嗎?想要一窺 KDE/Qt 程式設計的奧秘嗎?想要
學習 X Window 上的視窗程式設計嗎?歡迎各類關於 KDE/Qt、Qtopia、Qt/Embedded、QSA、PyQt 等各類心得討論。

版主: AceLan, Franklin

請問如何按一下按鈕,然後用QPainter畫出一個圖

文章mattatlantis » 週一 4月 20, 2009 7:05 pm

請問如何按一下滑鼠,然後用QPainter畫出一個圖
在我的程式中QPainter只能在paintEvent()中畫出,但按鈕觸發的
函式中不在paintEvent()中,請問要怎麼寫?
代碼:


void PaintArea::sendmark_ab()//按鈕觸發函式
{

QPainter ppp(this);
ppp.drawText(200,200,"abc");
num = num+10;

}

void PaintArea::paintEvent(QPaintEvent *)
{
}



大致上是這樣,謝謝各位囉
[/code]
最後由 mattatlantis 於 週二 4月 21, 2009 9:52 pm 編輯,總共編輯了 1 次。
mattatlantis
可愛的小學生
可愛的小學生
 
文章: 6
註冊時間: 週一 4月 20, 2009 7:04 pm

文章siyuan.nz » 週二 4月 21, 2009 6:42 pm

不是很確定你的問題,不過你要的好像是 mousePressEvent(QMouseEvent*) 或 mouseReleaseEvent(QMouseEvent*)?
如:
代碼: 選擇全部
void mouseReleaseEvent(QMouseEvent *e) {
    myDrawFunc( e->pos() );
}
siyuan.nz
可愛的小學生
可愛的小學生
 
文章: 27
註冊時間: 週四 5月 31, 2007 3:57 pm
來自: 紐西蘭

喝喝再說清楚一點

文章mattatlantis » 週二 4月 21, 2009 9:39 pm

不好意思,是這樣低,我有個2維圖形,然後有左右移動的游標,我想按下按鈕後然後在游標的標示位置上,在原本的2維圖形上畫個圖示作標記,但我不知怎麼做才好。因為Qpainter離開Qpainterevent後就無法運作了
mattatlantis
可愛的小學生
可愛的小學生
 
文章: 6
註冊時間: 週一 4月 20, 2009 7:04 pm

文章siyuan.nz » 週四 4月 23, 2009 11:50 am

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,對游標做改變。這就達到了按鈕的效果。
siyuan.nz
可愛的小學生
可愛的小學生
 
文章: 27
註冊時間: 週四 5月 31, 2007 3:57 pm
來自: 紐西蘭

文章mattatlantis » 週一 4月 27, 2009 9:10 pm

自己發問自己回答,
我是在大陸網站上學到低。
先用QPinaterPath將想要的圖形或是文字加入。
再將QPainterPath用QPainter.drawPath畫出,這樣就解決了
這樣就可以囉~
mattatlantis
可愛的小學生
可愛的小學生
 
文章: 6
註冊時間: 週一 4月 20, 2009 7:04 pm


回到 KDE/Qt 程式設計

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客