Re: [問題] Qt的滑鼠座標顯示

看板C_and_CPP作者 (加油!!變強)時間16年前 (2010/01/25 17:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《goodwise (加油!!變強)》之銘言: : 小弟用QT開發一個程式 : 裡面有個繪圖的QGraphicsScene : 用QGraphicsView建置在一個視窗QMainWindow中 : 想在QMainWindow另一個元件狀態列QStatusBar用showMessage印出座標 : 在QGraphicsScene下有個mouseMoveEvent(QGraphicsSceneMouseMoveEvent *e) : 滑鼠在QGraphicsView的範圍裡按下滑鼠時 : 可以在裡面用e->scenePos()去獲得座標位置 : 現在問題來了 要更改QStatusBar的顯示值時是在QMainWindow下改 : 但是滑鼠的座標卻只有在QGraphicsScene裡才能取得 : 要怎麼把e->scenePos()傳給QStatusBar顯示呢??? : 找到的範例都是 : main本身就是一個QLabel直接去抓滑鼠 : 再setText本身顯示座標 : 但卻沒有其下的元件滑鼠事件傳到其他顯示元件去給值 : 感覺應該是很簡單的 可能是我腦袋轉不過來吧 試出來了 果然是蠻簡單的= = 之後試著在QMainWindow下建一個修改statusBar顯示值的slot 假設我在QGraphicsScene下按下滑鼠時要在QStatusBar上更新座標數值 宣告: slots:void showPos(QGraphicsSceneMouseEvent *event); 實作: void mainWindow::showPos(QGraphicsSceneMouseEvent *event) { QString msg; msg.sprintf("(%d, %d)\n", (int)event->scenePos().x(),(int)event->scenePos().y()); statusBar->showMessage(msg,0); } 另外創一個class比如說叫paintScene繼承QGraphicsScene 在底下下建一個signal 宣告: signals:void mousePressed(QGraphicsSceneMouseEvent *event); 實作: 在paintScene的mouseMoveEvent(QGraphicsSceneMouseEvent *event)下 釋出mousePressed信號 void paintScene::mousePressEvent(QGraphicsSceneMouseEvent *event) { emit mousePressed(event); ........... ........... } 最後在視窗QMainWindow下將signal和slot相連 connect(scene1, SIGNAL(mousePressed(QGraphicsSceneMouseEvent*)), this, SLOT(showPos(QGraphicsSceneMouseEvent*))); 要注意參數*的傳遞 不然會有找不到信號的錯誤訊息 這裡算是亂試試出來的 因為小弟從Java轉過來 還不太有指標要不要加*的觀念 另外謝謝寄信給我的版友 算是自問自答拉= = -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.56.71.90 ※ 編輯: goodwise 來自: 61.56.71.90 (01/25 17:07)
文章代碼(AID): #1BNLxPKf (C_and_CPP)
文章代碼(AID): #1BNLxPKf (C_and_CPP)