网站怎么制作成软件做网站基础源代码

web/2025/10/6 19:00:00/文章来源:
网站怎么制作成软件,做网站基础源代码,网站弄好了怎么推广,网店网络推广方案1、QT通信机制为了更好的实现QT的信息交互#xff0c;在QT系统中创建了较为完善的通信机制。QT的通信可分为QT内部通信和外部通信两大类。对于这两类通信机制及应用场合做如以下分析#xff1a;(1)QT内部对象间通信在图形用户界面编程中#xff0c;经常需要将一个窗口部件的…1、QT通信机制为了更好的实现QT的信息交互在QT系统中创建了较为完善的通信机制。QT的通信可分为QT内部通信和外部通信两大类。对于这两类通信机制及应用场合做如以下分析(1)QT内部对象间通信在图形用户界面编程中经常需要将一个窗口部件的变化通知给窗口的其它部件使其产生相应的变化。对于这种内部对象间的通信QT主要采用了信号和槽的机制。这种机制是QT区别于其他GUI工具的核心机制。在大部分的GUI工具中通常为可能触发的每种行为通过定义回调函数来实现。这种回调函数是一个指向函数的指针在进行函数回调执行时不能保证所传递的函数参数类型的正确性因此容易造成进程的崩溃。在QT中信号和槽的机制取代了这种繁杂的、易崩溃的对象通信机制。信号是当对象状态改变时所发出的。槽是用来接收发射的信号并响应相应事件的类的成员函数。信号和槽的连接是通过connect()函数来实现的。例如实现单击按钮终止应用程序运行的代码connect(button , SIGNAL(clicked()) , qApp , SLOT(quit()) );实现过程就是一个button被单击后会激发clicked信号通过connect()函数的连接qApp会接收到此信号并执行槽函数quit()。在此过程中信号的发出并不关心什么样的对象来接收此信号也不关心是否有对象来接收此信号只要对象状态发生改变此信号就会发出。此时槽也并不知晓有什么的信号与自己相联系和是否有信号与自己联系这样信号和槽就真正的实现了程序代码的封装提 高了代码的可重用性。同时信号和槽的连接还实现了类型的安全性如果类型不匹配它会以警告的方式报告类型错误而不会使系统产生崩溃。(2)QT与外部设备间通信QT与外部通信主要是将外部发来的消息以事件的方式进行接收处理。外部设备将主要通过socket与QT应用程序进行连接。在此以输入设备与QT应用程序的通信为例说明QT与外部通信的原理。在QT的应用程序开始运行时主程序将通过函数调用来创建并启动qwsServer服务器然后通过socket建立该服务器与输入硬件设备的连 接。服务器启动后将会打开鼠标与键盘设备然后将打开的设备文件描述符fd连接到socket上。等到QT应用程序进入主事件循环时事件处理程序将通过 Linux系统的select函数来检测文件描述符fd的状态变化情况以实现对socket的监听。如果文件描述符fd状态改变说明设备有数据输入。此 时事件处理程序将会发出信号使设备输入的数据能及时得到QT应用程序的响应。数据进入服务器内部就会以事件的形式将数据放入事件队列里等待QT客户应用程序接收处理。处理结束后再将事件放入请求队列里通过服务器将事件发送到相应硬件上完成外部输入设备与QT应用程序的整个通信过程。2、 QProcess机制分析QProcess类通常是被用来启动外部程序并与它们进行通信的。QProcess是把外部进程看成是一个有序的I/O设备因此可通过 write()函数实现对进程标准输入的写操作通过read()readLine()和getChar()函数实现对标准输出的读操作。(1) QProcess通信机制QT可以通过QProcess类实现前端程序对外部应用程序的调用。这个过程的实现首先是将前端运行的程序看成是QT的主进程然后再通过创建主进 程的子进程来调用外部的应用程序。这样QProcess的通信机制就抽象为父子进程之间的通信机制。QProcess在实现父子进程间的通信过程中是运用 Linux系统的无名管道来实现的因此为了能更加清楚的说明QProcess的通信机制在此首先介绍关于无名管道实现父子进程间的通信机制。无名管道是一种只能够在同族父子之间通信并且在通信过程中只能从固定的一端写从另一端读的单向的通信方式。该无名管道是通过调用pipe()函数而创建的。创建代码如下#include  int pipe(int fd[2]) ;  返回若成功则为0若出错则为-1创建后经参数fd返回两个文件描述符fd[0]为读而打开fd[1]为写而打开。经过fork()函数创建其子进程后子进程将拥有与父进程相 同的两个文件描述符。如果想要实现父进程向子进程的通信则关闭父进程的读端fd[0]同时关闭子进程的写端fd[1]。这样就建立了从父进程到子进程的 通信连接。由于无名管道的单向通信性所以如果要应用无名管道实现父子进程之间的双向通信则至少需要应用双管道进行通信。QProcess类的通信原理就是利 用多管道实现了父子进程之间的通信。然而对于外部运行的应用程序大都是通过标准输入而读得信息通过标准输出而发送出信息因此只通过建立管道并不能完成 内外进程?之间的通信。要解决此问题就如该模块开始时所说QProcess是把外部进程看成是一个I/O设备然后通过对I/O设备的读写来完成内外 进程的通信。在QProcess中父子进程之间是通过管道连接的要实现子进程能从标准输入中读得父进程对管道的写操作同时父进程能从管道中读得子进程对标准 输出或标准容错的写操作就要在子进程中将管道的读端描述符复制给标准输入端将另外管道的写端描述符复制给标准输出端和标准容错端即实现管道端口地址 的重定向。这样子进程对标准输入、标准输出及标准容错的操作就反应到了管道中。QProcess在正常渠道模式下具体实现共用了五个无名管道进行通信。五个管道的描述符分别用 childpipe[2]stdinChannelpipe[2]stdoutChannelpipe[2]stderrChannelpipe[2] 和deathpipe[2]五个数组来保存。deathpipe指代的管道会用在消亡的子进程与父进程之间。当子进程准备撤销时会发送一个表示该子进程消 亡的字符给父进程来等待父进程进行处理。stdinChannelpipestdoutChannelpipe和stderrChannelpipe所指代的管道分别与标准输入标准输出和标准容错进行绑定实现了与外部程序的通信。childpipe指代的管道主要是为父子进程之间的通信而建立的。如果在管道中有新数据写入就会通知相应进程去读。另外图2是QProcess在正常渠道模式下的通信原理图如果是在融合渠道模式下将没有容错 管道此时原理图中将没有第一个管道也就不会有管道描述符。同时标准容错端和标准输出端将共同挂接到子进程的stdoutChannelpipe的写 端来实现内外进程的通信。(2) QProcess应用方式由于QProcess类实现了对底层通信方式较为完善的封装因此利用QProcess类将更为方便的实现对外部应用程序的调用。在此通过在QT界面中调用外部mplayer的例子来简单说明QProcess的应用方式。const QString mplayerPath(/mnt/yaffs/mplayer);const QString musicFile(/mnt/yaffs/music/sound.mp3);QProcess* mplayerProcessnew QProcess();QStringList args;argsargsargs args argsmplayerProcess-setProcessChannelMode(QProcess::MergedChannels);mplayerProcess-start(mplayerPath,args);第一行指明了所要调用的外部应用程序mplayer的位置。第二行指明了所要播放的声音文件及目录路径。第三行创建一个指向类QProcess的指针。第四到第九行指定mplayer参数具体参数可以查看maplayer参数介绍。-slave参数表示打开slave模式. 这用来将MPlayer作为其它程序的后端. MPlayer将从他的标准输入读取简单命令行, 而不再截获键盘事件.SLAVE模式协议部分将解释其语法。-quiet显示较少的输出和状态信息。-wid可以为mplayer指定输出窗口。-af volume10选择输出音量级别为10.这个选项是不可重入的, 所以对每个音频流只能使用一次。第十行为设置进程渠道的模式为融合模 式即将标准输出和标准容错绑定到同一个管道的写端。第十一行为启动外部应用程序mplayer。内核中管道及通信环境的建立都是在此步中完成的。mplayer在slave模式下运行会自动从标准输入中读取信息并执行。由QProcess的通信原理可知管道的读端描述符stdinChannelpipe[0]复制给了标准输入即标准输入的描述符也为stdinChannelpipe[0]因此按照标准输入的描述符去 读信息就是到stdinChannelpipe所对应的管道中读取信息。所以如果想在QT的主进程中发送命令使mplayer退出只需在主程序中向 stdinChannelpipe[1]端写入命令quit就可以执行语句为myProcess-write(”quit ”);(此处的 write()函数为QProcess类的成员函数具体实现就是向stdinChannelpipe[1]端写入信息)(3)QProcess的发展及分析QProcess类伴随着QT/Embedded的发展逐渐趋于完善。在QTE2及其更前版本中还没有QProcess类如果想实现与外部应用程 序的通信必须要自己实现对管道或socket的建立与重定向。到了QTE3版本就实现了对QProcess类的封装。在QTE3的版本 中QProcess类的实现是通过应用socket来建立主进程与外部应用程序之间通信的。通信原理与图3所示基本相同只是将图中的管道描述符改为是 socket的描述符即可。QT主程序在建立成对socket描述符时需要调用Linux系统函数socketpair()。在生成的成对socket描述符之间可以实现父子进程之间的双向通信即无论是socket的0套接口还是1套接口都可进行读写。但为了避免出现通信过程中父子进程对同一个socket的争夺例如在子进程还未将父进程发送的信息全部读出时子进程又要求将自己产生的数据返 回给父进程。如果父子进程双向通信只用一个socket来完成就会出现父子进程发送的信息混乱情况。因此对于QProcess的实现仍然必须通过多个 socket来共同完成。由上面的描述可知尽管socket有双向通信功能但在实现QProcess过程中只是利用socket实现了单向通信功能。因此既浪费了对资源 的利用又增加了系统的开销。为了解决此问题QTE4版本将QProcess的通信连接方式由socket改为了只能实现单向通信的无名管道来实现。通信 原理就是以上3.1 QProcess通信机制中所描述的。3、其它通信方式除了上面介绍的无名管道和socket通信方式外一般操作系统中常用的进程间通信机制也都可以用于QT系统内部不同进程之间的通信如消息队列、共享内存、信号量、有名管道等机制。其中信号量机制在QT中已经重新进行了封装有些机制则可以直接通过操作系统的系统调用来实现。另外如果我们只是想通过管道或socket来实现较简单的外部通信也可以重新创建管道或socket来实现自己要求的功能。例如还是在QT主程序中调用外部mplayer。如果我们只是想在QT主程序中控制mplayer而不要求得到mplayer输出的信息。则可以按照以下方式来实现const char* mplayerPath  /mnt/yaffs/mplayer;const char* musicFile  /mnt/yaffs/music/sound.mp3;const char* arg[5];arg[0]  mplayerPath;arg[1]  -slave;arg[2]  -quiet;arg[3]  musicFile;arg[4]  NULL;int fd[2],pid;if(pipe(fd)0)printf(creating pipe is error );else while((pidfork())0);if(pid0){::close(fd[1]);::dup2(fd[0],STDIN_FILENO);execvp(arg[0],(const* char*)arg);}else{::close(fd[0]);}第1到8行与前面QProcess类实现调用mplayer一样是用来指明mplayer运行时参数的。第10行是创建一个管道。第12行是创建一个子进程。1520行是关闭父子进程中没用的管道描述符。此时可结合图2.1和图2.2来理解从父进程到子进程通信环境的建立。第16行是把子进程的读端与标准输入绑定以便mplayer能够接收到父进程发出的命令。17行就是从子进程中调用外部mplayer的实现。此时程序执行后mplayer就可以运行起来。如果想在QT主程序中通过发送命令使mplayer退出就在管道的写端写入命令quit就可以。实现语句为write(fd[1],quit,strlen(quit));该例子说明了QT通信方式运用的灵活性可以根据实际情况进行应用。同时该例子的实现方式正是利用了QProcess类实现的机制因此可以结合这个例子更加深刻的理解QProcess类的实现机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淘宝客网站一定要备案视觉设计网站

Xsens动作捕捉技术助力于中国戏曲演员运动分析 搜维尔科技:Movella Xsens动作捕捉技术助力于中国戏曲演员运动分析

十大免费建站app怎样做网站初中生

目录 一,项目介绍 1.1 关于高并发内存池 1.2 关于池化技术 1.3 关于malloc 二,定长内存池实现 2.1 实现详情 ​2.2 完整代码 三,高并发内存池整体设计 四,threadcache设计 4.1 整体设计 4.2 哈希桶映射对齐规则 4.3 …

微信运营网站建设销售网站开发的背景

#做题方法# 进去之后做了简单的注入发现有错误回显,就进行注入发现过滤了sql语 后面进行了双写and payload: ?usernameadmin%27%20aandnd%20updatexml(1,concat(0x7e,dAtabase(),0x7e,version()),1)%20--&passwordadmi 接下来又 ?usernameadm…

和17做网店类似的货源网站外包公司催收合法吗

IDEA 中,"Scratches and Consoles" 是一个用于临时代码编辑和交互式开发的工具窗口,作用如下:Scratches(草稿):Scratches 是一个用于临时编写和运行代码片段的工具,你可以在其中创建临…

网站后台中表格制作网络广告的形式

卧龙吟有所有特性是没有详细说明或者说容易被大家忽视的,这些都是需要我们去挖掘的,对此,特意奉上辟邪剑谱一本。一,四季系统卧龙吟的时间轴系统中不仅仅是XX年开始可以国战,XX年开始海盗入侵,还有喜闻乐见…

网站有利于seo的细节dw网站导航怎么做

编者按:巨灾项目,作为国家公共安全体系的重要组成部分,对于提升我国防灾减灾能力具有举足轻重的意义。其中,地震预警作为巨灾项目的重要一环,其技术的创新与应用直接关系到人民群众的生命财产安全。云轴科技ZStack在国…

呼家楼做网站的公司哪家好2017网站开发发展前景

实例对象和构造函数的关系及原型: 实例对象是通过构造函数创建出来的,实例对象的构造器constructor就是指向构造函数的;每个实例对象中的同一方法的指向是各不相同的,但是其属性值相同的属性可以相同,这样会造成内存浪…

做网站建设的公司有哪些网页设计免费模板参考网页

文章目录 四大核心复习一、获取模块内的state数据1.目标:2.使用模块中的数据3.代码示例 二、获取模块内的getters数据1.目标:2.语法:3.代码演示 三、获取模块内的mutations方法1.目标:2.注意:3.调用方式:4.…

网站挂马解决池州网站建设

PC上不了网初步排查方案步骤 首先查看配置是否正确,是否使用自动获取(DHCP)IP,掩码,网关,如果不是,手动配置确认网关,子网掩码,IP是否配置正确,IP是否已有PC使…

什么是多页面网站wordpress调用分类描述

一,前言 RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。点击跳转RabbitM…

泗洪县建设局网站怎么查不到专业团队高清图片

前言hfish HFish是一款社区型免费蜜罐,侧重企业安全场景,从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发,为用户提供可独立操作且实用的功能,通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷感知和威胁情报领域的能力。 HFish具有超过40种蜜罐环境、提供免费…

做服装零售上什么网站沈阳企业自助建站系统

Sky Guide是一款能让小伙伴们观察银河的手机软件,尤其是喜欢行星、星座的小伙伴们来讲,这款软件能很好的帮助小伙伴们观看这些,让小伙伴们体验不一样的观星乐趣,因此想要观看的小伙伴们,赶紧来试试吧。软件介绍&#x…

网站群 米拓互联网家装平台有哪些

本文作者:徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了在极狐GitLab 用户…

网站开发岗位职责网站维护需要做那些事

来源:国机智能机器人曾为现代互联网早期协议和架构设计做出贡献的Vint Cerf,用一个寓言来解释为什么在人工智能等新兴技术出现后,勇敢的领导力至关重要。想象一下,你住在一个被群山环绕的山谷底部的小社区里。在远处的山顶上有一块…

医院网站建设作用中国4台根服务器地点

表单 表单输入绑定 只需要v-model声明一下这个变量就可以。 还可以选择不同的类型&#xff0c;例如 type"checkbox“ v-model 也提供了 lazy、number、.trim 功能&#xff0c;只需要在v-model后面加入.lazy 例如&#xff1a;v-model.lazy”message“ <template><…

名片型网站开发网站首页面

大家都知道java中有很多的基础知识&#xff0c;需要大家花费一定的时间去消化。关于java中ConcurrentHashMap的扩容机制不知道大家是否了解过&#xff0c;其实内容也是很好理解的&#xff0c;一起来看看吧。首先&#xff0c;我们需要知道的是&#xff1a;1. 计算每个线程可以处…

四个平台建设网站不显示图片网络运维工程师年终总结

此章节偏理论知识 对于小一点的项目 比如说角色都是平级的 那我们直接像之前 vue2.x项目从0到1&#xff08;二&#xff09;之后台管理侧边栏&#xff08;动态渲染路由以及高亮&#xff09;_vue动态渲染侧边栏_关忆北_的博客-CSDN博客这样渲染就行了 但是一旦项目大了 …

怎样自己建设网站代理记账公司收费表

查看自己系统的版本 必须运行 Windows 10 版本 2004 及更高版本&#xff08;内部版本 19041 及更高版本&#xff09;或 Windows 11 才能使用以下命令 在设置&#xff0c;系统里面就能看到 开启windows功能 直接winQ搜 开启hyber-V、使用于Linux的Windows子系统、虚拟机平…

网站关键词全国各地的排名情况网站栏目标题

Ubuntu conda环境迁移&#xff08;conda-pack&#xff09; 方法一&#xff1a;压缩拷贝方法二&#xff1a;conda-pack 在一台电脑配置好conda虚拟环境后&#xff0c;若在其它电脑需要同样的环境&#xff0c;可通过如下两种方式进行迁移。 方法一&#xff1a;压缩拷贝 找到Ubu…

互联网网站建设挣钱吗网站的搜索功能一般怎么做

文物是宝贵的历史遗产和文化瑰宝&#xff0c;其保护是我们共同的责任。为了实现文物的安全保护&#xff0c;现代科技提供了各种环境监测设备&#xff0c;可以实时监控文物的状态并采取相应的保护措施。本文将介绍一种利用各种环境监测设备实现文物实时状态监控的保护系统。 一…