[問題] Qt 抓滑鼠座標
目前我寫用Qt寫一個可以抓滑鼠座標的程式
而可以抓到的座標卻侷限在Widget or MainWindow裡面
只要跑到外面就沒辦法更新了,抓座標的方式是這樣寫得
void Widget::mouseMoveEvent(QMouseEvent *e)
{
int x_cod = e->globalX();
int y_cod = e->globalY();
.....
.....
}
在上段的程式碼雖然用了globalX,可是一旦滑鼠移出Widget,就不再更新了
而我查到一段作法是使用grabMouse的方式
寫法如下:
void Widget::mouseMoveEvent(QMouseEvent *e)
{
grabMouse();
int x_cod = e->globalX();
int y_cod = e->globalY();
......
......
}
void Widget::mousePressEvent(QMouseEvent *e)
{
releaseMouse();
}
void Widget::mouseReleaseEvent(QMouseEvent *e)
{
releaseMouse();
}
上面的作法是說再產生滑鼠移動的event時,就抓住滑鼠所有控制權
在"滑鼠按下"及"滑鼠放開"的兩個event下,把滑鼠release
可是這樣的作法非常吃CPU,會造成UI畫面更新過慢
因此想請教各位先進該怎麼做才不會干擾到UI的更新速度
還望先進指點,謝謝
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
小弟找到關於我問題的解法,以下分享給大家
Widget or Window具有兩個event:leaveEvent、enterEvent
在leaveEvent的時候做grabMouse,在enterEvent的時候做releaseMouse就行了
程式大致如下:
void Widget::leaveEvent(QEvent *e)
{
grabMouse();
}
void Widget::enterEvent(QEvent *e)
{
releaseMouse();
}
不過這樣的作法變成一旦開啟這隻程式,除了關掉該程式外
滑鼠皆不可對其他Window產生動作,不過這也是我的需求沒錯
--
當你睜大眼睛卻發現自己什麼都看不見的時候,不要以為是自己瞎了
或許,前方真的一無所有
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.136.144
→
10/13 13:00, , 1F
10/13 13:00, 1F
→
10/13 13:02, , 2F
10/13 13:02, 2F
→
10/13 13:16, , 3F
10/13 13:16, 3F
→
10/13 13:16, , 4F
10/13 13:16, 4F
→
10/13 13:32, , 5F
10/13 13:32, 5F
→
10/13 14:39, , 6F
10/13 14:39, 6F
※ 編輯: godman362 來自: 123.195.136.144 (10/13 14:41)
※ 編輯: godman362 來自: 123.195.136.144 (10/13 14:43)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章