• 9824阅读
  • 9回复

[提问]qt如何获取鼠标的状态是Up还是Down? [复制链接]

上一主题 下一主题
离线qdxianxing
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-03
我想知道当前鼠标是被按下了,还是没有被按下,有方法吗?

(不管鼠标是在哪里,无论是在我的程序界面上,还是在我的程序界面外。总之就是希望知道鼠标是Up状态,还是Down状态。)

离线uidab

只看该作者 1楼 发表于: 2012-05-03
回 楼主(qdxianxing) 的帖子
QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick, or QEvent::MouseMove.
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线qdxianxing
只看该作者 2楼 发表于: 2012-05-03
Re:回 楼主(qdxianxing) 的帖子
引用第1楼uidab于2012-05-03 10:25发表的 回 楼主(qdxianxing) 的帖子 :
QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick, or QEvent::MouseMove.

不行,你的这些是事件。我希望获取的是状态。


例如:我程序里面是这样的。

if(鼠标状态是Down)
{
   DoSomething1();
}
else
{
   DoSomething2();
}
离线uidab

只看该作者 3楼 发表于: 2012-05-03
回 2楼(qdxianxing) 的帖子
enum Qt::MouseButton
flags Qt::MouseButtons
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线qdxianxing
只看该作者 4楼 发表于: 2012-05-03
Re:回 2楼(qdxianxing) 的帖子
引用第3楼uidab于2012-05-03 11:20发表的 回 2楼(qdxianxing) 的帖子 :
enum Qt::MouseButton
flags Qt::MouseButtons




你的思路是:鼠标事件触发,然后去判断鼠标状态。

是不是?


但我的程序,不需要鼠标事件触发。而是程序运行到某个时候,然后去判断一下当前鼠标的状态。
离线uidab

只看该作者 5楼 发表于: 2012-05-03
回 4楼(qdxianxing) 的帖子
你的主窗口是QMainwindow??
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线uidab

只看该作者 6楼 发表于: 2012-05-03
回 4楼(qdxianxing) 的帖子
void ScribbleArea::mousePressEvent(QMouseEvent *event)
{
     if (event->button() == Qt::LeftButton) {
         lastPoint = event->pos();
         scribbling = true;
     }
}

void ScribbleArea::mouseMoveEvent(QMouseEvent *event)
{
     if ((event->buttons() & Qt::LeftButton) && scribbling)
         drawLineTo(event->pos());
}

void ScribbleArea::mouseReleaseEvent(QMouseEvent *event)
{
     if (event->button() == Qt::LeftButton && scribbling) {
         drawLineTo(event->pos());
         scribbling = false;
     }
}
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线uidab

只看该作者 7楼 发表于: 2012-05-03
回 4楼(qdxianxing) 的帖子
实际上你可以在这些事件里记录鼠标状态,然后在你需要的地方判断。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线qdxianxing
只看该作者 8楼 发表于: 2012-05-03
Re:回 4楼(qdxianxing) 的帖子
引用第7楼uidab于2012-05-03 12:26发表的 回 4楼(qdxianxing) 的帖子 :
实际上你可以在这些事件里记录鼠标状态,然后在你需要的地方判断。



我明白你的意思,但是,我觉得这样做,始终不是很不合理:鼠标的操作是十分频繁的,鼠标每次操作,都触发执行,感觉有点过于浪费资源。
离线uidab

只看该作者 9楼 发表于: 2012-05-03
Re:Re:回 4楼(qdxianxing) 的帖子
引用第8楼qdxianxing于2012-05-03 14:26发表的 Re:回 4楼(qdxianxing) 的帖子 :
我明白你的意思,但是,我觉得这样做,始终不是很不合理:鼠标的操作是十分频繁的,鼠标每次操作,都触发执行,感觉有点过于浪费资源。

是这样的,只能自己加一些判断,在条件符合的时候在执行涉及到鼠标的状态查询代码。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
快速回复
限100 字节
 
上一个 下一个