Qt Creator快速入门 第6章 事件系统.ppt

Qt Creator快速入门 第6章 事件系统.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Qt Creator快速入门》第2版; 在Qt中,事件作为一个对象,继承自QEvent类,常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等,它们与QEvent类的继承关系如图所示。 ;主 要 内 容;6.1 Qt中的事件;事件的处理;重新实现事件处理函数;在MyLineEdit中添加键盘按下事件处理函数声明: protected: void keyPressEvent(QKeyEvent *event); 事件处理函数的定义: void MyLineEdit::keyPressEvent(QKeyEvent *event) // 键盘按下事件 { qDebug() tr(MyLineEdit键盘按下事件); QLineEdit::keyPressEvent(event); // 执行QLineEdit类的默认事件处理 event-ignore(); // 忽略该事件 } 在Widget中添加键盘按下事件处理函数声明: protected: void keyPressEvent(QKeyEvent *event); 事件处理函数的定义: void Widget::keyPressEvent(QKeyEvent *event) { qDebug() tr(Widget键盘按下事件); }; 从这个例子中可以看到,事件是先传递给指定窗口部件的,这里确切的说应该是先传递给获得焦点的窗口部件的。但是如果该部件忽略掉该事件,那么这个事件就会传递给这个部件的父部件。在重新实现事件处理函数时,一般要调用父类的相应的事件处理函数来实现默认的操作。 ;安装事件过滤器;在Widget中进行事件过滤器函数的声明: bool eventFilter(QObject *obj, QEvent *event); 在widget.cpp文件中的构造函数的最后添上一行代码: lineEdit-installEventFilter(this); // 在Widget上为lineEdit安装事件过滤器 下面是事件过滤器函数的定义: bool Widget::eventFilter(QObject *obj, QEvent *event) // 事件过滤器 { if(obj == lineEdit) { // 如果是lineEdit部件上的事件 if(event-type() == QEvent::KeyPress) qDebug() tr(Widget的事件过滤器); } return QWidget::eventFilter(obj, event); } 在事件过滤器中,先判断该事件的对象是不是lineEdit,如果是,再判断事件类型。最后返回了QWidget类默认的事件过滤器的执行结果。 ;事件的传递;6.2 鼠标事件和滚轮事件;void Widget::mousePressEvent(QMouseEvent *event) // 鼠标按下事件 { if(event-button() == Qt::LeftButton){ // 如果是鼠标左键按下 QCursor cursor; cursor.setShape(Qt::ClosedHandCursor); QApplication::setOverrideCursor(cursor); // 使鼠标指针暂时改变形状 offset = event-globalPos() - pos(); // 获取指针位置和窗口位置的差值 } else if(event-button() == Qt::RightButton){ // 如果是鼠标右键按下 QCursor cursor(QPixmap(../yafeilinux.png)); QApplication::setOverrideCursor(cursor);// 使用自定义的图片作为鼠标指针 } } 在鼠标按下事件处理函数中,先判断是哪个按键按下,如果是鼠标左键,那么就更改指针的形状,并且存储当前指针位置与窗口位置的差值。这里使用了globalPos()函数来获取鼠标指针的位置,这个位置是指

文档评论(0)

清风老月 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳春市惠兴图文设计有限公司
IP属地广东
统一社会信用代码/组织机构代码
91441781MA53BEWA2D

1亿VIP精品文档

相关文档