Qt 自定义事件
2016-01-03 17:13
369 查看
关于Qt的自定义事件也是看了几个大牛的博客。总结下心得,如有错误请指出。一起成长。
先给源码。也是第一次原创啊,不知道怎么写,呵呵。
具体内容就是
要实现event函数,需继承QWidget类,需要在此函数中扑捉MyCustomEvent并做出相应的处理。
要自定义事件,需继承QEvent类,然后做自己需要做的事情。关于MyCustomEvent的初始化还可以使用其它的方式。从新实现构造函数,在构造函数中调用
最后一个总结:
自定义事件就是,首先继承于QEvent类,使用一个自定义的EventType的整型值初始化。此值需大于99,因为0~999的值被系统保留了,然后在自定义的Widget中重写event函数,扑捉该事件。至于事件的触发则需要QApplication的静态方法sentEvent和postEvent。
最后贴出输出结果:
打印出来自定义类型的type。
借鉴: Qt学习之路(23): 自定义事件
Qt自定义事件的实现
ok,写博客也不容易,在此感谢许多在博客中写下许多博客的大牛们致敬。
先给源码。也是第一次原创啊,不知道怎么写,呵呵。
#include <QApplication> #include <QtGui> #include <QDebug> class MyWidget : public QWidget { public: bool event(QEvent *event);//重载event函数,在event函数中调用自定义的事件,而自定义事件是使用自定义的eventType值来初始化。 }; static const int MyCustomEventType = 1099; class MyCustomEvent : public QEvent { public: MyCustomEvent() : QEvent((QEvent::Type)MyCustomEventType) {} }; bool MyWidget::event(QEvent *event) { if (event->type() == QEvent::KeyPress) { QKeyEvent *ke = static_cast<QKeyEvent *>(event); if (ke->key() == Qt::Key_Tab) { return true; } } else if (event->type() == MyCustomEventType) { MyCustomEvent *myEvent = static_cast<MyCustomEvent *>(event); qDebug() << myEvent->type(); return true; } return QWidget::event(event); } int main(int argc,char **argv) { QApplication app(argc,argv); MyWidget * w = new MyWidget; w->show(); MyCustomEvent *event = new MyCustomEvent(); QApplication::postEvent(w,event); return app.exec(); }
具体内容就是
要实现event函数,需继承QWidget类,需要在此函数中扑捉MyCustomEvent并做出相应的处理。
要自定义事件,需继承QEvent类,然后做自己需要做的事情。关于MyCustomEvent的初始化还可以使用其它的方式。从新实现构造函数,在构造函数中调用
static int QEvent::registerEventType ( int hint = -1 );来获取一个EventType
最后一个总结:
自定义事件就是,首先继承于QEvent类,使用一个自定义的EventType的整型值初始化。此值需大于99,因为0~999的值被系统保留了,然后在自定义的Widget中重写event函数,扑捉该事件。至于事件的触发则需要QApplication的静态方法sentEvent和postEvent。
最后贴出输出结果:
打印出来自定义类型的type。
借鉴: Qt学习之路(23): 自定义事件
Qt自定义事件的实现
ok,写博客也不容易,在此感谢许多在博客中写下许多博客的大牛们致敬。
相关文章推荐
- Qt与JS相互调用
- 模态与非模态的区别
- Qt视图加载表格
- HT for Web嵌入QtWebKit的client解决方式
- QT编译出错解决方法
- ubuntu qt 配置qwt
- QT 操作MySQL
- opencv+QT学习(1) -- opencv+QT在win 7下的环境搭建
- QT for IOS 点滴
- Qt XML 使用QxmlStreamReader的使用的步骤和方法
- ubuntu15.04 opencv3.1.0 qt creator环境配置
- 【原创】QT4升级到QT5
- QTableWidget详解
- tiny4412 linux+qtopia nfs网络文件系统的挂载
- Qt之界面实现技巧
- Qt 中设置窗体透明度的几种方法
- 自学QT之Qt 4迁移至Qt 5
- Qt——鼠标拖动调整窗口大小
- Qt学习 之 多线程程序设计
- Qt 定时器的使用