QT学习小结之鼠标事件

qt鼠标事件所包含的头文件<QMouseEvent>,QMouseEvent中包含了两个坐标,一是全局坐标(globalPos()),即桌面坐标,这个跟Windows下的调用的getCursorPos函数得到的结果一致。

鼠标事件常见的有mousePressEvent(),mouseReleaseEvent(),mouseDoubleClickEvent(),mouseMoveEvent(),下面我就贴上几段代码吧

void Event_test::mouseMoveEvent(QMouseEvent *event)     //鼠标拖动事件
{
    QPoint point;
    point = QCursor::pos();
    qDebug()<<"point"<<point.x()<<"    "<<point.y();
    qDebug()<<"move :"<<"  "<<event->pos().x()<<"  "<<event->pos().y();
}
void Event_test::mousePressEvent(QMouseEvent *event)   //鼠标按下事件
{
    QString str="("+QString::number(event->x())+","+QString::number(event->y())+")";
    if(event->button()==Qt::LeftButton)
    {
        statusBar()->showMessage (tr("Mouse Left Button Pressed:")+str);//在状态栏中显示临时信息
    }
    else if(event->button()==Qt::RightButton)
    {
        statusBar()->showMessage (tr("Mouse Right Button Pressed:")+str);
    }
    else if(event->button()==Qt::MidButton)
    {
         statusBar()->showMessage (tr("Mouse Middle Button Pressed:")+str);
    }
    qDebug()<<"Press "<<"   "<<event->pos().x()<<"   "<<event->pos().y();
}
void Event_test::mouseReleaseEvent(QMouseEvent *event)      //鼠标释放事件
{    QString str="("+QString::number(event->x())+","+QString::number(event->y())+")";        statusBar()->showMessage (tr("Mouser Released:")+str,3000);
    qDebug()<<"release "<<"    "<<event->pos().x()<<"    "<<event->pos().y();
}
void Event_test::mouseDoubleClickEvent(QMouseEvent *event)    //鼠标双击事件
{
    QString str="("+QString::number(event->x())+","+QString::number(event->y())+")";
    if(event->button()==Qt::LeftButton)
    {
          statusBar()->showMessage (tr("Mouse Left Button Double Clicked:")+str);
    }
     else if(event->button()==Qt::RightButton)
    {
          statusBar()->showMessage (tr("Mouse Right Button Double Clicked:")+str);
    }
    else if(event->button()==Qt::MidButton)
    {
          statusBar()->showMessage (tr("Mouse Middle Button Double Clicked:")+str);
    }
}
时间: 2024-08-28 11:10:43

QT学习小结之鼠标事件的相关文章

Qt 学习之路 :事件

事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等:另一些事件则是由系统自动发出,如计时器事件. 事件也就是我们通常说的“事件驱动(event drive)”程序设计的基础概念.事件的出现,使得程序代码不会按照原始的线性顺序执行.想想看,从最初的 C 语言开始,我们的程序就是以一种线性的顺序执行代码:这一条语句执行之后,开始执行下一条语句:这一个函数执行过后

QT学习小结之信号与槽

信号与槽函数是我们学习QT必备的基础知识,今天跟大家分享我学习QT的一些总结吧. 信号槽机制是Qt编程的基础.通过信号槽,能够使Qt各组件在不知道对方的情形下能够相互通讯. 槽函数和普通的C++成员函数没有很大的区别.它们也可以使virtual的:可以被重写:可以使public.protected或者private的:可以由其它的C++函数调用:参数可以是任何类型的.如果要说区别,那就是,槽函数可以和一个信号相连接,当这个信号发生时,它可以被自动调用. 信号与槽函数的连接我们可以用connect

Qt学习之路(19): 事件(event) - 豆子空间 - 51CTO技术博客

对于QT的事件机制讲解的很清楚,赞一个! 来源:http://devbean.blog.51cto.com/448512/223974#0-hi-1-64506-89fdc647f52c5196c0d5da60d38d89ea

QT学习 之 事件与事件过滤器(分为五个层次)

事件 在Qt中,事件是作为对象处理的,所有事件对象继承自抽象类QEvent.此类用来表示程序内部发生或者来自于外部但应用程序应该知道的动作.事件能够能过被 QObject 的子类接受或者处理,但是通常用在与组件有关的应用中.本文主要阐述了在一个典型应用中的事件接收与处理. 事件的传递发送 当一个事件产生时,Qt 通过实例化一个 QEvent 的合适的子类来表示它,然后通过调用 event() 函数发送给 QObject 的实例(或者它的子类). event() 函数本身并不会处理事件,根据事件类

qt学习(三):鼠标图标改变

qt学习 (三):鼠标图标改变 当你进入一个美好的qt软件场景,比如游戏,电脑的黑白图标会让程序逊色不少, 1改图标要加光标的头文件, 2 载入光标图, 3 再设置改光标就可以了 1在头文件中加 #include <QtGui>  //光标类的父类 //再在public成员中声明换的函数void keyPressEvent(QKeyEvent *k); //声明按键换图的函数         .h文件    --注意头文件和声明 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

网页元素位置、鼠标事件位置信息小结

在web开发过程中,比较容易混淆和让人感到头等的一部分就是下面这张图了吧,一下子都记住对我来说很难,在日常的开发过程中, 总是遇到了再查,遇到一点记一点,相信日积月累,总会记住.今天遇到了其中的一部分,做一下小结. 1,获取浏览器窗口的宽和高(兼容性写法): var winW=document.documentElement.clientWidth||document.body.clientWidth; var winH=document.documentElement.clientHeight

qt实现类似QQ伸缩窗口--鼠标事件应用

上一章节讲了qt鼠标事件实现,获取鼠标参数的方法.这一讲主要讲怎么应用上讲的鼠标事件实现一个小功能. qq好友对话框右侧 未展开时如图: 鼠标移动到 “隐藏侧边”处单击可以隐藏侧边,隐藏后效果如图: 实现的范例效果如下 1.一般情况 2.鼠标移动到中间分割线中间区域时,效果 3.单击红色按钮后,效果 4.鼠标移动到边界,效果 下面讲解实现过程:一般情况在QT中,这种伸缩窗体的实现有两种方法:一种是是直接用QSplitter分割器实现:另一种直接用布局管理器自己实现.本节用的是第二种方法实现的.布

【qt学习006】Dialogs and MainWindows 小结

学习<c++GUI Programming with Qt 4>已有一段时间,非常享受这本书的阅读过程,内容简洁清晰,让人一目了然. 马上要学习更难的内容,所以先做个总结,然后再继续前进. 总结的形式尽量简洁,以代码为主,再将一些我认为重要的笔记作为注释添加在代码中.内容大多是摘抄自书本,但也有一些地方属于个人理解. 闲话少谈,下面列出代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 // example1

【qt学习004】对话框小结

第一部分,基本对话框告一段落. 书本上第一章节还介绍了制作抽屉效果.制作表格.制作进度条等节,但在我看来,似乎与前面的对话框制作方式大同小异,不值得费时费力地一一学习,所以跳过了,这一跳,就到了书本的50多页,七分之一的比例,进度神速啊,这样想想感觉倍儿爽,但或许我会后悔. 回顾整个第一章,有几个步骤属于通用的: 1. 继承public QDialog类. 2. 创建对象,有QLabel, QPushButton等. 3. 布局,暂时用到了QGridLayout类以及其方法addWidget,简