- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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()函数来获取鼠标指针的位置,这个位置是指
您可能关注的文档
- plc基础知识入门.ppt
- plc项目63科威PLCCAN网络+232网络的通信+监控组态】.ppt
- PMP_PMBOK图解项目风险管理.ppt
- PMP考试分析及知识点梳理.pptx
- POCOYO与宝贝家合作方案.ppt
- Poka-Yoke防错技术(第2部分).ppt
- POLYCOM音频产品与软件视频会议结合应用培训.ppt
- POM管理流程分享.ppt
- POP陈列管理规范.ppt
- POP海报制作中的色彩.ppt
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)