QtpostEvent

QtpostEvent
关于Qt postEvent
呵呵,转载了这么多别⼈的关于Event⽅⾯的⽂章,我也来说说两三句吧
前⼏天⼀直被这个postEvent给困扰着,所以主要讲解postEvent的个⼈理解吧,随便稍微提⼀下其他的实现机制。
手动注油器Qt中抛消息有:信号和槽、postEvent、sentEvent等机制,sentEvent只⽀持同步的。postEvent可以实现异步的,其机制是将消息发送到消息队列中,消息队列⼜会把这些消息都抛出(当然要实现该功能我们也可以⽤信号和槽机制,将connect函数的最后⼀个参数设置为Qt::QueuedConnection即可)。
无心磨床自动上料机⾔归正传,上段我们说到消息队列把消息抛出来,我们该如何去捕获该消息呢?我们只要实现⽗类中的event()或者customEvent()函数即可,在⾥⾯实现我们⾃⼰的处理,在此建议采⽤customEvent()。
谷氨酰胺合成酶以下是⼀个简单的实例:
#include <QWidget>
#include <QEvent>
const QEvent::Type CustomEvent_Login = (QEvent::Type)5001;//建议⽤5000以上唯⼀的标识
class PostEvent : public QWidget
{
Q_OBJECT
阻焊油墨
public:
PostEvent(QWidget *parent = 0);
~PostEvent();
喷砂工艺private:心音传感器
void customEvent(QEvent *e); //该函数是⽗类QWidget的虚函数
};
PostEvent::PostEvent(QWidget *parent)
{
QApplication::postEvent(this, new QEvent(CustomEvent_Login)); //该函数实现将⾃定义的消息发送到队列,且new
QEvent(CustomEvent_Login))只能动态分配,原因请看Qt的帮助⽂档中的postEvent函数说明。
}
void PostEvent::customEvent(QEvent *e)
{
if (e->type() == CustomEvent_Login) //捕获消息
{
QMessageBox msgBox;
msgBox.setText("The document has been modified.");
<();
}
}
呵呵,就这样吧 本⼈⼀开始犯了⼀个很⽩痴的错误,即把customEvent函数当作⽤户可以⾃定义的函数,殊不知是⽗类中的虚函数,所以⼀直捕获不到消息。好了,以上只是⼀个简单的关于postEvent的⼀个应⽤,如果想了解更多的消息机制请阅读其他关于event的⽂章。

本文发布于:2024-09-22 13:25:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/183375.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:消息   队列   函数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议