QT鼠标事件总结(二)示例
来源:互联网 发布:魔兽美工软件下载 编辑:程序博客网 时间:2024/05/16 06:18
QT鼠标事件总结(全)
from http://blog.csdn.net/whealker/archive/2011/01/17/6146109.aspx
by whealker
参考教材实例,增加了注释和新功能,方便大家交流学习
//mouseevent.cpp
#include "mouseevent.h"MouseEvent::MouseEvent( ): QMainWindow(){setWindowTitle(tr("Get Mouse Event"));setCursor(Qt::CrossCursor);//设置鼠标为十字星labelStatus = new QLabel();labelStatus->setMinimumSize(500,20);labelStatus->setFrameShape(QFrame::WinPanel);//设置标签形状labelStatus->setFrameShadow(QFrame::Sunken); //设置标签阴影;labelStatus->setText(tr("Mouse Position:"));labelStatus -> setFixedWidth (100);labelMousePos = new QLabel();labelMousePos->setText(tr(""));labelMousePos -> setFixedWidth (100);
statusBar()->addPermanentWidget(labelStatus);//给状态栏添加永久的部件statusBar()->addPermanentWidget(labelMousePos);this->setMouseTracking ( true);//自动跟踪鼠标(默认情况下,mouseMoveEvent响应你按下鼠标的某个键的鼠标移动。)}
MouseEvent::~MouseEvent(){
}
void MouseEvent::mouseMoveEvent ( QMouseEvent * e )//鼠标移动事件响应{
//1.获取局部鼠标位置labelMousePos ->setText("("+QString::number(e->x())+","+QString::number(e->y())+")");//2.获取全局鼠标位置/*QPoint coursePoint;coursePoint = QCursor::pos();//获取当前光标的位置labelMousePos ->setText("("+QString::number(coursePoint.x())+","+QString::number(coursePoint.y())+")");*/}
void MouseEvent::mousePressEvent ( QMouseEvent * e )//鼠标单击事件响应{
QString str="("+QString::number(e->x())+","+QString::number(e->y())+")";if(e->button()==Qt::LeftButton){statusBar()->showMessage (tr("Mouse Left Button Pressed:")+str);//显示临时信息}else if(e->button()==Qt::RightButton){statusBar()->showMessage (tr("Mouse Right Button Pressed:")+str);}else if(e->button()==Qt::MidButton){statusBar()->showMessage (tr("Mouse Middle Button Pressed:")+str);}}
void MouseEvent::mouseDoubleClickEvent( QMouseEvent * e )//鼠标双击事件响应{
QString str="("+QString::number(e->x())+","+QString::number(e->y())+")";if(e->button()==Qt::LeftButton){statusBar()->showMessage (tr("Mouse Left Button Double Clicked:")+str);}else if(e->button()==Qt::RightButton){statusBar()->showMessage (tr("Mouse Right Button Double Clicked:")+str);}else if(e->button()==Qt::MidButton){statusBar()->showMessage (tr("Mouse Middle Button Double Clicked:")+str);}}
void MouseEvent::mouseReleaseEvent ( QMouseEvent * e )//鼠标松开事件响应{
QString str="("+QString::number(e->x())+","+QString::number(e->y())+")";statusBar()->showMessage (tr("Mouser Released:")+str,3000);}
/*
statusBar()状态栏状态栏位于主窗口的最下方,提供一个显示工具提示等信息的地方。一般地,当窗口不是最大化的时候,状态栏的右下角会有一个可以调节大小的控制点;当窗口最大化的时候,这个控制点会自动消失。Qt提供了一个QStatusBar类来实现状态栏。QMainWindow类里面就有一个statusBar()函数,用于实现状态栏的调用。类似menuBar()函数,如果不存在状态栏,该函数会自动创建一个,如果已经创建则会返回这个状态栏的指针。如果你要替换掉已经存在的状态栏,需要使用QMainWindow的setStatusBar()函数。状态栏显示的信息有三种类型:临时信息、一般信息和永久信息。其中,临时信息指临时显示的信息,一段时间后自动消失——这个功能可以使用QStatusBar的showMessage()函数来实现;一般信息可以用来显示页码之类的;永久信息是不会消失的信息,比如可以在状态栏提示用户Caps Lock键被按下之类。*/
--------------------------------------------------------------------------
//mouseevent.h
#ifndef MOUSEEVENT_H#define MOUSEEVENT_H#include <QtGui>class MouseEvent : public QMainWindow{
Q_OBJECTpublic:MouseEvent();~MouseEvent();private:QLabel *labelStatus;QLabel *labelMousePos;protected :void mouseMoveEvent ( QMouseEvent * e );void mousePressEvent ( QMouseEvent * e );void mouseReleaseEvent ( QMouseEvent * e );void mouseDoubleClickEvent( QMouseEvent * e );};
#endif
--------------------------------------------------------------------------
//main.cpp
#include <QtGui/QApplication>#include "mouseevent.h"int main(int argc, char *argv[]){
QApplication a(argc, argv);MouseEvent w;w.show();return a.exec();}
--------------------------------------------------------------------------
//mouseEbent.pro
QT += core gui
TEMPLATE = app
SOURCES += main.cpp/
mouseevent.cppHEADERS += mouseevent.h
- QT鼠标事件总结(二)示例
- qt鼠标事件总结
- Qt鼠标事件总结
- Qt鼠标事件总结
- QT鼠标事件总结
- qt鼠标事件总结
- qt鼠标事件总结
- qt鼠标事件总结
- Qt 事件 QMouseEvent 鼠标示例
- qt鼠标事件总结(一)
- qt鼠标事件总结(转)
- qt鼠标事件总结(转)
- qt鼠标事件总结 (转)
- qt鼠标事件总结(转)
- qt鼠标事件总结 (转)
- qt鼠标事件总结(转)
- QT鼠标事件的总结
- Qt鼠标事件QMouseEvent总结
- scp—ssh copy
- qt鼠标事件总结(一)
- web四层架构
- 窗体控制常见属性
- Delphi结束进程模块
- QT鼠标事件总结(二)示例
- 多线程
- 代码中的”代理“思想
- __declspec(dllexport) & __declspec(dllimport)
- VC A2W 使用
- 微软企业库5.0 学习之路——基本入门
- 强制类型转换成结构体
- 反转链表 递归 循环
- 见山只是山 见水只是水——提升对继承的认识