QT之事件机制
- MyPushButton.h:
- #ifndef MYPUSHBUTTON_H
- #define MYPUSHBUTTON_H
- #include<QPushButton>
- #include<QEvent>
- #include<QMouseEvent>
- class MyPushButton : public QPushButton
- {
- public:
- MyPushButton();
- MyPushButton(const QString& text,QWidget *parent=nullptr);
- bool event(QEvent *e);
- void mousePressEvent(QMouseEvent *e);
- };
- #endif // MYPUSHBUTTON_H
- MyPushButton.cpp:
- #include "MyPushButton.h"
- #include<QWidget>
- #include<QDebug>
- MyPushButton::MyPushButton(const QString& text,QWidget *parent)
- :QPushButton(text,parent)
- {
- }
- bool MyPushButton::event(QEvent *e)
- {
- if(e->type()==QEvent::MouseButtonPress)
- {
- QMouseEvent *x=static_cast<QMouseEvent*>(e);
- mousePressEvent(x);
- //e->ignore();
- //e->accept();
- return false; //表示我不处理这个事件
- //return true; //表示我处理了这个事件
- }
- return QWidget::event(e);
- }
- void MyPushButton::mousePressEvent(QMouseEvent *e)
- {
- qDebug()<<"子类的事件执行"<<endl;
- }
- MyPushButton::MyPushButton()
- {
- }
Widget.h:
- #ifndef WIDGET_H
- #define WIDGET_H
- #include <QWidget>
- #include "MyPushButton.h"
- class Widget : public QWidget
- {
- Q_OBJECT
- public:
- Widget(QWidget *parent = 0);
- ~Widget();
- bool event(QEvent *e);
- void mousePressEvent(QMouseEvent *e);
- private:
- MyPushButton *mypushbutton;
- };
- #endif // WIDGET_H
Widget.cpp:
- #include "widget.h"
- #include<QDebug>
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- {
- mypushbutton=new MyPushButton("按钮",this);
- }
- bool Widget::event(QEvent *e)
- {
- return QWidget::event(e);
- }
- void Widget::mousePressEvent(QMouseEvent *e)
- {
- qDebug()<<"父类的事件执行"<<endl;
- }
- Widget::~Widget()
- {
- }
main.cpp:
- #include "widget.h"
- #include <QApplication>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- Widget w;
- w.show();
- return a.exec();
- }
效果:
QT之事件机制的更多相关文章
- 剖析Qt的事件机制原理
版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消息循环和WinMai ...
- 剖析Qt的事件机制原理(源代码级别)
在用Qt写Gui程序的时候,在main函数里面最后依据都是app.exec();很多书上对这句的解释是,使Qt程序进入消息循环.下面我们就到exec()函数内部,来看一下他的实现原理.Let's go ...
- Qt 事件系统浅析 (用 Windows API 描述,分析了QCoreApplication::exec()和QEventLoop::exec的源码)(比起新号槽,事件机制是更高级的抽象,拥有更多特性,比如 accept/ignore,filter,还是实现状态机等高级 API 的基础)
事件系统在 Qt 中扮演了十分重要的角色,不仅 GUI 的方方面面需要使用到事件系统,Signals/Slots 技术也离不开事件系统(多线程间).我们本文中暂且不描述 GUI 中的一些特殊情况,来说 ...
- QT源码之Qt信号槽机制与事件机制的联系
QT源码之Qt信号槽机制与事件机制的联系是本文要介绍的内容,通过解决一个问题,从中分析出的理论,先来看内容. 本文就是来解决一个问题,就是当signal和slot的连接为Qt::QueuedConne ...
- qt事件机制(转)
学习了一段时间的Qt之后,发现Qt的事件机制和其他语言的机制有些不同.Qt除了能够通过信号和槽机制来实现一些Action动作之外,还可以用对象所带的事件,或者用户自定义的事件来实现对象的一些行为处理. ...
- Qt的事件
Qt的事件机制 事件过滤器: 可以让一个对象侦听拦截另外一个对象的事件. 实现原理: 在所有Qt对象的基类:QObject中有一个 类型为:QObjectList 名字为:eventFilters 的 ...
- Qt事件机制浅析(定义,产生,异步事件循环,转发,与信号的区别。感觉QT事件与Delphi的事件一致,而信号则与Windows消息一致)
Qt事件机制 Qt程序是事件驱动的, 程序的每个动作都是由幕后某个事件所触发.. Qt事件的发生和处理成为程序运行的主线,存在于程序整个生命周期. Qt事件的类型很多, 常见的qt的事件如下: 键盘事 ...
- Qt 事件机制
[1]事件 事件是可以被控件识别的操作.如按下确定按钮.选择某个单选按钮或复选框. 每种控件有自己可识别的事件,如窗体的加载.单击.双击等事件,编辑框(文本框)的文本改变事件等等. 事件就是用户对窗口 ...
- 详解 QT 源码之 Qt 事件机制原理
QT 源码之 Qt 事件机制原理是本文要介绍的内容,在用Qt写Gui程序的时候,在main函数里面最后依据都是app.exec();很多书上对这句的解释是,使 Qt 程序进入消息循环.下面我们就到ex ...
随机推荐
- flutter 学习笔记
常用属性 container 填充padding,边距margins,边框borders,背景色color, decoration: 渐变gradient-Alignment(x,y),圆角borde ...
- centos使用docker安装mysql5.7
搜索镜像 docker search mysql 拉取镜像 docker pull mysql:5.7 启动mysql镜像 docker run -p 3306:3306 --name mysql - ...
- IDEA 修改之前保存的git地址的账号和密码
1.打开控制面板 快捷键 win+R,然后输入control,打开控制面板 2.用户账户 3.管理windows凭据 4.点击里面的git就可以修改了
- JAVA判断URL地址是否非法
/** * 判断请求url是否非法 * @param url * @return */ public static boolean isValidRequestUri(String url) { if ...
- 🍃【Spring专题】「原理系列」SpringMVC的运行工作原理(补充修订)
承接相关之前的SpringMVC的框架技术的流程分析 初始化流程(initStrategies) 执行流程 寻找相关HandlerMapping 请求到DispatcherServlet类进行执行相关 ...
- 菜鸟物流的运输网络(计蒜客复赛F)
菜鸟物流有自己的运输网络,网络中包含 nn 个城市物流集散中心,和 mm 对城市之间的运输线路(线路是双向的).菜鸟物流允许淘宝卖家自行确定包裹的运输路径,但只有一条限制规则:不允许经过重复的城市.淘 ...
- 1269 - Consecutive Sum
1269 - Consecutive Sum PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 64 MB ...
- BZOJ 1857: [Scoi2010]传送带(三分套三分)
Time Limit: 1 Sec Memory Limit: 64 MB Submit: 2549 Solved: 1370 [Submit][Status][Discuss] Descriptio ...
- 第三十个知识点:大致简述密钥协商中的BR安全定义。
第三十个知识点:大致简述密钥协商中的BR安全定义. 在两方之间建密钥共享是一件密码学中古老的问题.就算只考虑定义也比标准加密困难的多.尽管古典的Diffie-Hellman协议在1976年思路解决了这 ...
- 数据结构作业——P53算法设计题(6):设计一个算法,通过一趟遍历确定长度为n的单链表中值最大的结点
思路: 设单链表首个元素为最大值max 通过遍历元素,与最大值max作比较,将较大值附给max 输出最大值max 算法: /* *title:P53页程序设计第6题 *writer:weiyuexin ...