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

做照片书哪个网站好突出什么 加强网站建设

做照片书哪个网站好,突出什么 加强网站建设,学校网站建设市场,企业电子邮箱怎么申请注册引出 UI程序之所叫UI程序#xff0c;是因为需要与用户有交互#xff0c;用户交互一般是通过鼠标键盘等的输入设备#xff0c;那UI程序就需要有能随时响应用户交互的能力。 一个C程序的main函数大概是下面这样#xff1a; int main() {...return 0; } 我们如何使程序能随…引出 UI程序之所叫UI程序是因为需要与用户有交互用户交互一般是通过鼠标键盘等的输入设备那UI程序就需要有能随时响应用户交互的能力。 一个C程序的main函数大概是下面这样 int main() {...return 0; } 我们如何使程序能随时可以响应用户交互呢一个比较简单的设计就是通过while循环 int main() {while (1) {获取用户输入处理用户输入}return 0; } 有时一个事件的处理可能稍微会多花一点时间如果是上面这样在处理一个事件时就不能响应其他事件了所以我们需要一个队列系统可以将新事件放到队列里 int main() {while(1) { event getEventFromQueue()dealEvent(event);} } 原理 在Qt中事件循环是一种机制用于处理各种异步事件。事件循环通过一个事件队列来管理和调度事件当队列中有事件时事件循环会从队列中依次取出事件并处理直到队列为空或者事件循环被中断。 事件循环首先是一个无限“循环”程序在exec()里面无限循环能让跟在exec()后面的代码得不到运行机会直至程序从exec()跳出。从exec()跳出时事件循环即被终止。 其次之所以被称为“事件”循环是因为它能接收事件并处理之。当事件太多而不能马上处理完的时候待处理事件被放在一个“队列”里称为“事件循环队列”。当事件循环处理完一个事件后就从“事件循环队列”中取出下一个事件处理之。当事件循环队列为空的时候它和一个啥事也不做的永真循环有点类似但是和永真循环不同的是事件循环不会大量占用CPU资源。事件循环的本质就是以队列的方式再次分配线程时间片。 事件是如何产生的 事件的产生可以分为两种 程序外部产生指系统产生的事件例如鼠标按下MouseButtonPress、按键按下KeyPress等。Qt通过捕捉系统事件将其封装成自己的QEvent类再将事件发送出去。 程序内部产生指在代码中手动创建一个事件然后通过sendEvent/postEvent将事件发送到事件循环中。其中sendEvent是阻塞型的发送方式会等待事件处理完成后再继续执行而postEvent是非阻塞型的发送方式会将事件放入事件队列中并立即返回。 本质 QEventLoop即Qt中的事件循环类。主要接口如下 //exec是启动事件循环调用exec以后调用exec的函数就会被“阻塞”直到EventLoop里面的while循环结束。 int exec(QEventLoop::ProcessEventsFlags flags AllEvents) //exit是退出事件循环 void exit(int returnCode 0) bool isRunning() const //processEvents是及时处理队列中的事件(这个很有用 bool processEvents(QEventLoop::ProcessEventsFlags flags AllEvents) void processEvents(QEventLoop::ProcessEventsFlags flags, int maxTime) void wakeUp() 示意图 这里有个问题exec阻塞了当前函数还怎么退出EventLoop呢 答案是在派发事件后某个事件处理的函数中达到事件退出条件时调用exit函数将EventLoop中的退出标识设为true。 一般的Qt程序main函数中都有一个QCoreApplication/QGuiApplication/QApplication并在末尾调用 exec。 创建Qt Core Application时使用的是QCoreApplication创建Qt Widgets Application时使用的是QApplication创建Qt Quick Application时使用的是QGuiApplication。 其他 //例1 int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget_ScrollBar w;w.show();/*w.show()不生效界面不会输出UI程序中事件循环实质是通过UI来进行事件的循环处理*///return a.exec();return 0; }//例2 int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget_ScrollBar w;w.show();a.exec();//阻塞后续程序执行/*只有exec()退出事件循环结束才会输出Hello World*/qDebug() Hello World;return 0; }
http://www.dnsts.com.cn/news/173164.html

相关文章:

  • 网站推广成本科技公司 网站模板
  • 电商网站设计周志seowhy什么意思
  • 郑州建设网站的公司搜索引擎营销是什么意思
  • 淘宝客网站做seo怎样利用网站做淘宝客
  • 狗狗和人做网站网站建设制作介绍河南
  • 本地网站模板修改万网放网站
  • 安徽论坛网站建设做网站买计划书
  • 学校网站制作软件php开源网站
  • aspx php哪个做门户网站好企业如何 建设好自己的网站
  • 以域名做网站关键词做企业网站的轻量级cms
  • 河北婚庆网站建设定制公交车广告
  • 网站建设,h5,小程序如何建设阿里巴巴网站
  • 制作旅游网站设计概述地域ip 查询
  • 东营网站设计公司python图片wordpress
  • 贵州铁路投资建设网站免费自助建站哪个最好
  • 网站建设需要学那些当涂网站建设
  • .net 网站 调试个人网站带后台源码
  • 德令哈市公司网站建设网络推广专员所需知识
  • 网站页面优化技巧国内前十网站建设公司
  • 网站备案号如何查找网站建设属于什么职位类别
  • 备案网站内容简介网站建设贵
  • 住房公积金网站怎么做减员如何创建一个微信小程序
  • 做网站税费做落地页的网站
  • 江苏和住房建设厅网站一家专门做动漫的网站
  • 手机app软件东营网站建设优化
  • 电子商务毕业设计设计网站建设php 读取网站文件
  • 开发网站软件佛山做网站费用
  • 南充响应式网站建设公司网页设计
  • 广州做网站建设的公司排名羽毛球网站建设网站
  • 蒙文网站开发seo外链发布软件