当前位置: 首页 > news >正文

产品展示网站含后台网站模板下载兰州建设工程信息网站

产品展示网站含后台网站模板下载,兰州建设工程信息网站,重庆可以建建网站的平台,本地高端网站建设信息大全我们有时候想发送自定义事件 1#xff1a;创建自定义事件#xff0c;首先我们需要知道它的条件 1#xff1a;自定义事件需要继承QEvent 2#xff1a;事件的类型需要在 QEvent::User 和 QEvent::MaxUser 范围之间#xff0c;在QEvent::User之前 是预留给系统的事件 3#… 我们有时候想发送自定义事件 1创建自定义事件首先我们需要知道它的条件 1自定义事件需要继承QEvent 2事件的类型需要在 QEvent::User 和 QEvent::MaxUser 范围之间在QEvent::User之前 是预留给系统的事件 3使用sendEvent() 和 postEvent()发送自定义消息 4接受自定义消息通过 重写 customEvent 或者 使用 eventFilter事件 来处理 2注册自定义事件ID 在注册自定义事件的时候我们有两种方法 一使用QEvent::registerEventType()这个是系统会帮助我们注册ID如果错误 返回-1 二我们自定义 取QEvent::User 和QEvent::MaxUser 之间的值 方法一 QEvent::Type CustomEvent::m_eventType (QEvent::Type)QEvent::registerEventType();方法二 const int CustomEventBaseID QEvent::User; const int TextEventID CustomEventBaseID 1;3自定义事件 class CustomEvent :public QEvent { public:CustomEvent();virtual ~CustomEvent();static QEvent::Type eventType(); private:static QEvent::Type m_eventType; };QEvent::Type CustomEvent::m_eventType (QEvent::Type)QEvent::registerEventType();//1、注册自定义事件类型CustomEvent::CustomEvent():QEvent(eventType()) //2、指定事件类型 {}CustomEvent::~CustomEvent() {}QEvent::Type CustomEvent::eventType() {return m_eventType; }4:发送自定义事件 postEvent 方法异步发送向事件队列中 的发送一个指定接受者事件 不需要手动释放事件的内存QT框架自动释放 sendEvent方法此方法是阻塞发送的它发送对象事件等待对象处理结束返回 需要手动释放事件的内存 5自定义事件处理 写自定义事件 void customEvent(QEvent* event) override; 写事件过滤器 bool eventFilter(QObject* watched, QEvent* event) override; 还需要将对象添加到事件过滤器中 源码 .h #pragma once#include QtWidgets/QWidget #include ui_CustomEventTest.h #include QEvent #include QDebug//自定义事件 class CustomEvent :public QEvent { public:CustomEvent();virtual ~CustomEvent();void SetText(const QString str);QString GetText() const;void SetNumber(int number);int GetNumber() const;static QEvent::Type eventType(); private:QString m_str;int m_number;static QEvent::Type m_eventType; };class CustomTwoEvent :public QEvent { public:CustomTwoEvent();virtual ~CustomTwoEvent();void SetStr(const QString str);QString GetStr() const;void SetNumber(int number);int GetNumber() const; private:QString m_str;int m_number;};//测试自定义事件 class CustomEventTest : public QWidget {Q_OBJECTpublic:CustomEventTest(QWidget *parent nullptr);~CustomEventTest();private slots://测试自定义事件一void on_btn1_1_clicked();void on_btn2_1_clicked();void on_btn3_1_clicked();void on_btn4_1_clicked();protected:void customEvent(QEvent* event) override;private slots://测试自定义事件二void on_btn5_1_clicked();void on_btn6_1_clicked();void on_btn7_1_clicked();void on_btn8_1_clicked();protected:bool eventFilter(QObject* watched, QEvent* event) override;private:Ui::CustomEventTestClass ui; }; .cpp #include CustomEventTest.h/************************自定义事件一********************************/ QEvent::Type CustomEvent::m_eventType (QEvent::Type)QEvent::registerEventType();//1、注册自定义事件类型CustomEvent::CustomEvent():QEvent(eventType()) //2、指定事件类型 {}CustomEvent::~CustomEvent() {}void CustomEvent::SetText(const QString str) {m_str str; }QString CustomEvent::GetText() const {return m_str; }void CustomEvent::SetNumber(int number) {m_number number; }int CustomEvent::GetNumber() const {return m_number; }QEvent::Type CustomEvent::eventType() {return m_eventType; }/************************自定义事件一********************************//************************自定义事件二********************************/const int CustomEventBaseID QEvent::User; const int TextEventID CustomEventBaseID 1;CustomTwoEvent::CustomTwoEvent():QEvent(QEvent::Type(TextEventID)) {}CustomTwoEvent::~CustomTwoEvent() {}void CustomTwoEvent::SetStr(const QString str) {m_str str; }QString CustomTwoEvent::GetStr() const {return m_str; }void CustomTwoEvent::SetNumber(int number) {m_number number; }int CustomTwoEvent::GetNumber() const {return m_number; }/************************自定义事件二********************************//************************测试自定义事件********************************/ CustomEventTest::CustomEventTest(QWidget *parent): QWidget(parent) {ui.setupUi(this);qApp-installEventFilter(this); }CustomEventTest::~CustomEventTest() {}void CustomEventTest::on_btn1_1_clicked() {QString str QStringLiteral(自定义事件一 我是post 发送指针);CustomEvent* event new CustomEvent;event-SetText(str);event-SetNumber(1);qApp-postEvent(this, event); }void CustomEventTest::on_btn2_1_clicked() {QString str QStringLiteral(自定义事件一 我是post 发送局部变量);CustomEvent event;event.SetText(str);event.SetNumber(2);//会出现崩溃qApp-postEvent(this, event); }void CustomEventTest::on_btn3_1_clicked() {QString str QStringLiteral(自定义事件一 我是send 发送指针);CustomEvent* event new CustomEvent;event-SetText(str);event-SetNumber(3);qApp-sendEvent(this, event);delete event; }void CustomEventTest::on_btn4_1_clicked() {QString str QStringLiteral(自定义事件一 我是send 发送局部变量);CustomEvent event;event.SetText(str);event.SetNumber(4);qApp-sendEvent(this, event); }void CustomEventTest::on_btn5_1_clicked() {QString str QStringLiteral(自定义事件二 我是post 发送指针);CustomTwoEvent* event new CustomTwoEvent;event-SetStr(str);event-SetNumber(5);qApp-postEvent(this, event); }void CustomEventTest::on_btn6_1_clicked() {QString str QStringLiteral(自定义事件二 我是post 发送局部变量);CustomTwoEvent event;event.SetStr(str);event.SetNumber(6);//会出现崩溃qApp-postEvent(this, event); }void CustomEventTest::on_btn7_1_clicked() {QString str QStringLiteral(自定义事件二 我是send 发送指针);CustomTwoEvent* event new CustomTwoEvent;event-SetStr(str);event-SetNumber(7);qApp-sendEvent(this, event);delete event; }void CustomEventTest::on_btn8_1_clicked() {QString str QStringLiteral(自定义事件二 我是send 发送局部变量);CustomTwoEvent event;event.SetStr(str);event.SetNumber(8);qApp-sendEvent(this, event); }void CustomEventTest::customEvent(QEvent* event) {if (event-type() CustomEvent::eventType()){CustomEvent* e dynamic_castCustomEvent*(event);if (e-GetNumber() 1)ui.btn1-setText(e-GetText());else if (e-GetNumber() 2)ui.btn2-setText(e-GetText());else if (e-GetNumber() 3)ui.btn3-setText(e-GetText());else if (e-GetNumber() 4)ui.btn4-setText(e-GetText());} }bool CustomEventTest::eventFilter(QObject* watched, QEvent* event) {if (event-type() TextEventID){CustomTwoEvent* e dynamic_castCustomTwoEvent*(event);if (e-GetNumber() 5)ui.btn5-setText(e-GetStr());else if (e-GetNumber() 6)ui.btn6-setText(e-GetStr());else if (e-GetNumber() 7)ui.btn7-setText(e-GetStr());else if (e-GetNumber() 8)ui.btn8-setText(e-GetStr());event-accept();}return QWidget::eventFilter(watched,event); } /************************测试自定义事件********************************/ 错误在上面的代码中当我们post 局部变量的时候会出现错误 QCoreApplication::removePostedEvent: Event of type 65535 deleted while posted to CustomEventTest CustomEventTestClass原因postEvent 只能在堆上创建系统会自动释放 参考博客 Qt 自定义事件 Qt中的事件- 自定义事件 Qt事件自定义事件
http://www.yutouwan.com/news/164936/

相关文章:

  • 哪里可以接网站开发的活大数据获客营销系统软件代理
  • 重庆锅炉网站建设费用一个域名能同时做2个网站吗
  • 内涵吧网站亚马逊外贸网站如何做
  • 陕西 网站建设郑州大学网页设计与网站建设
  • 建网站的8个详细步骤百度关键词批量看排名工具
  • 建设网站费用主要包括哪些内容生物公司网站建设
  • 郑州区块链数字钱包网站开发方案迅雷2t免费空间活动
  • 苏州网站的优化wordpress换服务器
  • 网站建设与管理技术发展移动惠生活app下载网址
  • 制作一个网站的步骤是什么推荐一些做电子的网站
  • 响应式网站自助建站google官网下载
  • 四川盼之网络科技官网seo入门培训
  • 网站建设做什么费用营销比较好的知名公司有哪些
  • 游戏门户网站建设wordpress时间轴页面
  • 网站模版 源码做租号玩网站赚钱吗
  • 简述网站建设的基本流程广西住房和建设厅网站
  • 做电影网站用什么服务器比较好小米商城wordpress主题
  • 道客网站建设推广小程序网站域名查主机名
  • 网站建设ssc源码修复网站加密
  • 产品创意设计安徽搜索引擎优化
  • 江苏省建设通官方网站南京最新发布
  • 中国大型网站手机广西网
  • 微软云怎么做网站医院网站制作设计
  • 网站建设文化怎么样乡村文化建设网站栏目设置
  • 国外文件传输网站wordpress菜单跳转
  • 低价网站建设推广报价线上招生代理平台
  • 如何自己做网站卖东西如何做企业文化培训
  • 莱芜建设局网站小米开发者模式
  • 开公司先建设网站政务门户网站建设规范
  • 备案后修改网站内容wordpress站下所有标签