博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt事件处理(一)
阅读量:4991 次
发布时间:2019-06-12

本文共 1589 字,大约阅读时间需要 5 分钟。

  从这章开始,我将简单实现Qt事件处理的五种方式,这五种方式的实现都是基于一个自定义的Button,我将它命名为MyButton。由于我是刚学Qt,有什么讲的不对的地方,请指正,不胜感激。

  首先来看第一种事件处理:"重新实现特定的事件处理器",这种方式最简单,派生于一个组件,重新实现它的事件处理。这里我主要实现的是mousePressEvent、mouseReleaseEvent以及mouseMoveEvent这三个事件处理,而实现的方式都差不多,不同在于设置Button显示的文本。

  mybutton.h的头文件如下:

#ifndef MYBUTTON_H#define MYBUTTON_H#include 
#include
class MyButton : public QPushButton{protected: void mousePressEvent(QMouseEvent* event); void mouseReleaseEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event);};#endif

   mybutton.cpp的文件如下:

#include "mybutton.h"void MyButton::mousePressEvent(QMouseEvent *event){    this->setText(QString("Press: %1, %2").arg(QString::number(event->x()), QString::number(event->y())));}void MyButton::mouseReleaseEvent(QMouseEvent *event){    this->setText(QString("Release: %1, %2").arg(QString::number(event->x()), QString::number(event->y())));}void MyButton::mouseMoveEvent(QMouseEvent *event){    this->setText(QString("Move: %1, %2").arg(QString::number(event->x()), QString::number(event->y())));}

  main函数调用为:

#include 
#include
#include "mybutton.h"int main(int argc, char *argv[]){ QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030")); MyButton *button = new MyButton; button->setWindowTitle(QObject::tr("重新实现特定的事件处理器")); button->resize(400, 200); button->show(); return a.exec();}

  程序运行时,Button上的文本随着鼠标在不同的位置点击、释放以及左击拖动鼠标的不同而显示相应的文本。界面如下:

              

 

转载于:https://www.cnblogs.com/venow/archive/2012/10/10/2718014.html

你可能感兴趣的文章
编写和执行C#代码的插件:CS-Script for Notepad++
查看>>
BZOJ3569: DZY Loves Chinese II(线性基构造)
查看>>
Android系统源码下载及使用(Android 14到19源码)
查看>>
绑定dropdownlist
查看>>
[LeetCode] Sudoku Solver
查看>>
实验四
查看>>
Python Day04
查看>>
Android新增API之AudioEffect中文API与应用实例
查看>>
颜色空间RGB与HSV(HSL)的转换
查看>>
swift 用协议实现代理传值功能
查看>>
深入懂得android view 生命周期
查看>>
android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
查看>>
Android 中 更新视图的函数ondraw() 和dispatchdraw()的区别
查看>>
《Java源码解析》之NIO的Selector机制(Part1:Selector.open())
查看>>
webpack安装问题
查看>>
Qt学习记录--Qt::CaseSensitive
查看>>
你的灯还亮着吗阅读笔记之一
查看>>
python介绍
查看>>
Unity-Editor按钮和菜单显示
查看>>
SharePoint InfoPath 保存无法发布问题
查看>>