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

做网站 指导安徽池州网站制作

做网站 指导,安徽池州网站制作,wordpress 股票插件,公司网站开发实例初始QT 什么是QTQT发展史QT支持的平台QT的优点QT的应用场景搭建QT开发环境QT的开发工具概述QT下载安装 使用QT创建项目QT 实现Hello World程序使用按钮控件来实现使用标签控件来实现 项目文件解析widget.hmain.cppwidget.cppwidget.ui.pro文件 对象树QT 窗口坐标体系 什么是QT … 初始QT 什么是QTQT发展史QT支持的平台QT的优点QT的应用场景搭建QT开发环境QT的开发工具概述QT下载安装 使用QT创建项目QT 实现Hello World程序使用按钮控件来实现使用标签控件来实现 项目文件解析widget.hmain.cppwidget.cppwidget.ui.pro文件 对象树QT 窗口坐标体系 什么是QT Qt 是⼀个跨平台的C图形⽤⼾界⾯应⽤程序框架。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的很容易扩展。Qt为开发者提供了⼀种基于组件的开发模式开发者可以通过简单的拖拽和组合来实现复杂的应⽤程序同时也可以使⽤C语⾔进⾏⾼级开发。 图形用户界面: 指采⽤图形⽅式显⽰的计算机操作⽤⼾界⾯是计算机与其使⽤者之间的对话接⼝是计算机系统的重要组成部分。 QT发展史 1991 年Qt最早由奇趣科技开发 1996 年进⼊商业领域它也是⽬前流⾏的Linux桌⾯环境KDE的基础 2008 年奇趣科技被诺基亚公司收购Qt称为诺基亚旗下的编程语⾔ 2012 年Qt⼜被Digia公司收购 2014 年4⽉跨平台的集成开发环境QtCreator3.1.0发布同年5⽉20⽇发布了Qt5.3正式版⾄此Qt实现了对IOS、Android、Embedded等各平台的全⾯⽀持。 QT支持的平台 Windows‒XP、Vista、Win7、Win8、Win2008、Win10Unix/X11‒Linux、SunSolaris、HP-UX、CompaqTru64UNIX、IBMAIX、SGIIRIX、FreeBSD、BSD/OS、和其他很多X11平台Macintosh‒MacOSXEmbedded‒有帧缓冲⽀持的嵌⼊式Linux平台WindowsCEAndroid QT的优点 跨平台⼏乎⽀持所有的平台接⼝简单容易上⼿学习QT框架对学习其他框架有参考意义。⼀定程度上简化了内存回收机制开发效率⾼能够快速的构建应⽤程序。有很好的社区氛围市场份额在缓慢上升。可以进⾏嵌⼊式开发。 QT的应用场景 桌面应用程序: Qt 能够创建各种类型的桌⾯应⽤程序包括⽂件管理器、媒体播放器、绘图程序等。Qt应⽤程序⽀持多种操作系统可以运⾏在Windows、Linux、macOS等桌⾯操作系统上。 移动应用程序: Qt ⽀持Android和IOS移动操作系统为应⽤程序提供了强⼤的跨平台能⼒。可以使⽤Qt构建各种移动应⽤程序例如社交应⽤、游戏、娱乐等。 嵌入式系统: Qt 在嵌⼊式领域应⽤⾮常⼴泛它可以构建⾯向各种设备的图形应⽤程序在机顶盒、⻋载娱乐系统、安防监控设备等领域具有⼴泛的应⽤。 搭建QT开发环境 QT的开发工具概述 QT Creator: Qt Creator 是⼀个轻量级的跨平台集成开发环境IDE专为使⽤Qt框架进⾏应⽤程序开发⽽设计。它是⼀个功能强⼤、易于使⽤、快速且⾼效的⼯具被⼴泛⽤于编写各种类型的应⽤程序如桌⾯应⽤程序、移动应⽤程序和嵌⼊式系统等。Qt Creator 提供了⼀个可视化的界⾯设计器和代码编辑器可以帮助开发者更快捷地创建复杂的⽤⼾界⾯和处理各种事件。它还包含了调试⼯具、版本控制⼯具、⾃动完成和智能提⽰等功能以及⽀持多语⾔和跨平台的开发环境。 QtCreator 的主要特点包括 紧密集成的Qt框架QtCreator专⻔为Qt开发⽽设计因此它与Qt框架集成得⾮常紧密使开 发者可以更容易地管理和部署他们的应⽤程序。强⼤的编辑器QtCreator具有⼀些先进的编辑器功能如语法⾼亮、代码折叠、智能提⽰、⾃动 完成和代码重构。集成的调试器QtCreator内置了调试器允许开发⼈员在代码中设置断点以及检查变量、堆栈和 调⽤树等信息。⾼效的构建系统QtCreator提供了⼀个⾼效的构建系统可以⾃动构建和部署应⽤程序同时⽀ 持使⽤不同的编译器和平台。可视化界⾯设计器QtCreator具有⼀个可视化界⾯设计器它允许开发⼈员在没有编写代码的情 况下创建复杂的⽤⼾界⾯。多语⾔⽀持QtCreator⽀持多种编程语⾔包括C、QML、JavaScript等。 VisualStudio: Visual Studio 是由微软公司开发的集成开发环境IDE。它可以⽤来开发多种类型的应⽤程序。包括Windows桌⾯应⽤程序、Web应⽤程序、移动应⽤程序、游戏等。VisualStudio提供了丰富的开发⼯具和功能包括代码编辑器、调试器、⾃动完成、代码重构、版本控制等等。它⽀持多种编程语⾔如C、C#、VisualBasic、F#、Python等。VisualStudio还可以与其他开发⼯具和服务集成如Azure 云服务、GitHub、Jenkins等。 Visual Studio 具有以下⼀些主要特点 多语⾔⽀持VisualStudio⽀持多种编程语⾔包括C、C#、VisualBasic、F#、Python、 JavaScript 等丰富的⼯具集VS提供了各种开发⼯具包括代码编辑器、调试器、代码分析⼯具等以提⾼开 发⼈员的效率可视化设计VS提供了可视化的设计⼯具如窗体设计器、WPF设计器等使开发⼈员可以直观 地设计⽤⼾界⾯跨平台开发VS⽀持跨平台开发可以开发适⽤于Windows、Linux和macOS等多个平台的应 ⽤程序集成的调试器VS集成了强⼤的调试器可以进⾏代码的单步调试、断点调试等操作来帮助开发 ⼈员查找和修复错误丰富的扩展性VS可以通过安装扩展来扩展其功能开发⼈员可以根据⾃⼰的需求选择并安装适 合的扩展。 Eclipse: Eclipse 是著名的跨平台的⾃由集成开发环境IDE。最初主要⽤来Java语⾔开发但是⽬前亦有⼈通过插件使其作为其他计算机语⾔⽐如C和Python的开发⼯具。Eclipse的本⾝只是⼀个框架平台但是众多插件的⽀持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发⾃⼰的IDE。Qt框架可以与Eclipse集成使开发者可以使⽤Eclipse的强⼤功能来开发Qt应⽤程序。 QT下载安装 Qt下载官⽹http://download.qt.io/archive/qt/ 国内清华源: https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/ 打开任意一个网站进入如下界面: 选择要下载的版本(推荐QT 5系列) 找到下载的文件并双击运行,双击后会出现下面的界面: 在选择安装路径的时候不要出现中文否则可能导致安装好了也无法正常使用; 选择安装组件这⾥我们安装的是QtCreator。如果电脑磁盘空间允许建议全选以便后续使 ⽤如果空间不允许请看第6步 选择部分组件说明其他未安装的组件在使⽤时可以另⾏添加 同意安装协议然后无脑下一步.双击打开QtCreator⼯具并进⼊到欢迎模式下的⽰例界⾯ 在⽰例中任选其中⼀个单击打开该⽰例。在单击之后会弹出⼀个窗⼝关闭即可 如果能构建并运⾏说明安装⽆误。运⾏结果如下图 QT环境变量配置: 找到Qt的安装路径复制 “bin” 路径 “此电脑”------ ⿏标右键“属性”------“⾼级系统设置”------ “环境变量” “新建”------填⼊bin路径------ “确定”; 注意在关掉所有窗⼝时⼀定要点击确定否则上述配置⽆效 使用QT创建项目 打开QtCreator在菜单栏中选中“⽂件”-------- “新建⽂件或项⽬”或者使⽤快捷键Ctrl n或者直接点击“new” 在欢迎模式下直接点击New如下图⽰ 选择项⽬模板,弹出如下对话框: 选择项⽬路径,给Qt项⽬命名及选择保存项⽬的路径 选择构建系统,选择Qt项⽬的构建系统使⽤默认的qmake 即可 填写类信息设置界⾯ 选择语⾔和翻译⽂件,点击下⼀步进⼊如下界⾯此处选择的语⾔是汉语,“英语这样的语⾔.⽽不是编程语⾔” 选择Qt套件 选择版本控制系统 点击下⼀步进⼊项⽬管理界⾯在项⽬管理界⾯可以设置作为⼦项⽬以及加⼊版本控制系统管 理。这两个功能暂时⽤不到都⽤默认的然后点击完成。 最终效果 QT 实现Hello World程序 使用按钮控件来实现 纯代码的方式: 最终实现效果: 2. 可视化操作实现: 然后直接运行: 使用标签控件来实现 纯代码方式实现 实现效果: **可视化操作实现: ** 最后运行效果: 项目文件解析 widget.h 在QT中如果某个类想要使用信号与槽的机制那么必须引入Q_OBJECT这个宏并且要将这个宏写在这个类的前面这时候QT编译器就允许这个类自定义信号和槽函数Ui::Widget *ui这个指针是在namespace Ui里的Widget类里面定义的并且这个ui指针实际上是只想可视化设计的界面的后面要访问这个可视化界面上的控件都是通过这个指针去访问的 main.cpp 使用QT创建一个任意一个工程过后main.cpp文件中都会自动生成以下代码 Qt系统提供的标准类名声明头⽂件没有.h后缀Qt⼀个类对应⼀个头⽂件类名就是头⽂件名QApplication 为应⽤程序类QApplicationaa为应⽤程序对象有且仅有⼀个。 3.1 QApplication管理图形⽤⼾界⾯应⽤程序的控制流和主要设置。 3.2 QApplication是Qt的整个后台管理的命脉。它包含主事件循环在其中来⾃窗⼝系统和其它 资源的所有事件处理和调度。它也处理应⽤程序的初始化和结束并且提供对话管理。 3.3 对于任何⼀个使⽤Qt的图形⽤⼾界⾯应⽤程序都正好存在⼀个QApplication对象⽽不论 这个应⽤程序在同⼀时间内是不是有0、1、2或更多个窗⼝。Widget w; 实例化窗口对象w.show() 显示窗口对象与之对应的w.close()隐藏窗口对象;a.exec() 程序进⼊消息循环等待对⽤⼾输⼊进⾏响应。这⾥main()把控制权转交给QtQt完 成事件处理⼯作当应⽤程序退出的时候exec()的值就会返回。在 exec()中Qt 接受并处理⽤⼾ 和系统的事件并且把它们传递给适当的窗⼝部件。 widget.cpp widget.cpp是Widget类的源码实现所有窗口上要添加的的功能都在这个文件中添加 widget.ui widget.ui 是窗体界⾯定义⽂件是⼀个XML⽂件定义了窗⼝上的所有组件的属性设置、布局及 其信号与槽函数的关联等。⽤UI设计器可视化设计的界⾯都由Qt⾃动解析并以XML⽂件的形式保 存下来。在设计界⾯时只需在UI设计器⾥进⾏可视化设计即可⽽不⽤管widget.ui⽂件是怎么⽣ 成的。 .pro文件 ⼯程新建好之后在⼯程⽬录列表中有⼀个后缀为.pro的⽂件.pro⽂件就是⼯程⽂件(project) 它是qmake ⾃动⽣成的⽤于⽣产 makefile 的配置⽂件。如图所⽰ 双击进⼊该⽂件该⽂件的核⼼内容如下 QT coregui // Qt 包含的模块 greaterThan(QT_MAJOR_VERSION, 4): QTwidgets //⼤于Qt4版本才包含widget模块 TARGETQtFirst TEMPLATEapp //应⽤程序名⽣成的.exe程序名称 //模板类型应⽤程序模板 SOURCESmain.cpp\ //源⽂件 widget.cpp //源⽂件 HEADERSwidget.h //头⽂件 “.pro” ⽂件的写法如下 注释从#开始到这⼀⾏结束。QT coregui //Qt包含的模块 Qt5包含的模块如下图所⽰ greaterThan(QT_MAJOR_VERSION,4): QTwidgets 这条语句的含义是如果 QT_MAJOR_VERSION ⼤于4也就是当前使⽤的Qt5及更⾼版本需要增加widgets 模块。如果 项⽬仅需⽀持Qt5也可以直接 添加QTwidgets⼀句。不过为了保持代码兼容最好还是按照QtCreator⽣成的语句编写。指定⽣成的应⽤程序名TARGETQtDemoTEMPLATEapp//模板。告诉qmake为这个应⽤程序⽣成哪种makefile。下⾯是可供选择的模 板 ⚫app建⽴⼀个应⽤程序的makefile。这是默认值所以如果模板没有被指定这个将被使 ⽤。 ⚫lib建⽴⼀个库的makefile。 ⚫vcapp建⽴⼀个应⽤程序的VisualStudio项⽬⽂件。 ⚫vclib 建⽴⼀个库的VisualStudio项⽬⽂件。 ⚫subdirs这是⼀个特殊的模板它可以创建⼀个能够进⼊特定⽬录的makefile并且为它调⽤ make的makefile。⼯程中包含的源⽂件SOURCESmain.cpp/widget.cpp⼯程中包含的头⽂件HEADERSwidget.h⼯程中包含的资源⽂件RESOURCESpainter.qrc⼯程中包含的ui设计⽂件FORMSwidget.ui配置信息CONFIGc11(使⽤c11的特性) CONFIG⽤来告诉qmake关于应⽤程序的配 置信息 对象树 不知道有没有细心的读者发现我们之前使用纯代码的方式分别用按钮控件和标签控件输出Hello World的时候控件对象都是我们new出来的: 我们似乎没有去手动释放他们是不是造成了内存泄漏 实际上是不会的当我们关闭窗口过后QT会自动的回收这些控件的空间 这完全是因为我们的最后一步setPrent(),这一步操作就会将我们的对象挂在对象树中去其中setParent()里面的参数就是我们这个对象在对象树中的父节点; 当我们关闭窗口过后QT实际上是会遍历这个对象树然后分别回收每一个对象也就是说当我们将对象挂到对象树之后我们就不必再关心这个对象的回收工作了而完全交给了QT来自动回收 实际上除了使用setParent()可以将我们的对象挂在对象树上面还可以在对象构造的时候给它传递父节点的指针让其在构造的时候就完成对象树的挂载。eg: 具体说一说对象树: 当创建⼀个QObject对象时会看到QObject的构造函数接收⼀个QObject指针作为参数这 个参数就是parent也就是⽗对象指针这相当于在创建QObject对象时可以提供⼀个其⽗对象我们创建的这个QObject对象 会⾃动添加到其⽗对象的children()列表当⽗对象析构的时候这个列表中的所有对象也会被析构。注意这⾥的⽗对象并不是继承 意义上的⽗类而是类似于二叉树中那样的父节点 这种机制在GUI程序设计中相当有⽤。例如⼀个按钮有⼀个QShortcut快捷键对象作为其 ⼦对象。当删除按钮的时候这个快捷键理应被删除。这是合理的。 QWidget是能够在屏幕上显⽰的⼀切组件的⽗类 QWidget继承⾃QObject因此也继承了这种对象树关系。⼀个孩⼦⾃动地成为⽗组件的⼀ 个⼦组件。因此它会显⽰在⽗组件的坐标系统中被⽗组件的边界剪裁。例如当⽤⼾关闭 ⼀个对话框的时候应⽤程序将其删除那么我们希望属于这个对话框的按钮、图标等应该 ⼀起被删除。事实就是如此因为这些都是对话框的⼦组件。当然我们也可以⾃⼰删除⼦对象它们会⾃动从其⽗对象列表中删除。⽐如当我们删除了 ⼀个⼯具栏时其所在的主窗⼝会⾃动将该⼯具栏从其⼦对象列表中删除并且⾃动调整屏幕 显⽰ Qt引⼊对象树的概念在⼀定程度上解决了内存问题。 当⼀个QObject对象在堆上创建的时候Qt会同时为其创建⼀个对象树。不过对象树中对象的 顺序是没有定义的。这意味着销毁这些对象的顺序也是未定义的。任何对象树中的QObject对象delete的时候如果这个对象有parent则⾃动将其从parent的 children() 列表中删除如果有孩⼦则⾃动delete每⼀个孩⼦。Qt保证没有QObject会被delete 两次这是由析构顺序决定的。 eg: 图中我们在栈上创建了一个QLabel控件然后我们也将这个控件挂载进了对象树但是随着Widget函数的作用域消失label对象的生命周期也就到头了编译器会自动回收label的空间在回收的时候它会将label这个对象从它的父节点中移除同时如果label对象存在孩子列表的话那么它也会释放孩子列表中的对象因此最终我们的对象树中就没有了label对象那么最终对对象树中的节点进行回收的时候就不回再回收到label对象这也就是上面说的QT不回对一个对象进行多次回收 注意: 我们最好不要在栈上创建控件然后再挂载进目录树因为栈上创建的对象生命周期随函数栈帧当这个函数栈帧被销毁了那么对象也会随之被回收那么此时页面上也就不会显示对应的控件 就比如这样我们明明创建了QLabel控件但是由于声明周期的作用QLabel控件一瞬即逝我们肉眼完全没反应过来的情况下就消失了这不太好因此我们强烈建议在堆上创建控件然后挂载进对象树让QT帮助我们完成回收工作如何验证我们将对象挂载进行对象树过后QT会自动帮助我们完成回收工作 之后我们需要定义一下MyTest这个类的析构函数: 之后我们可以将我们的MyTest对象在堆上开辟然后挂载进对象树最后我们叉掉窗口看看会不会打印MyTest的析构函数打印了就说明QT真的会帮助我们回收堆空间反之则不回 运行结果如下: 通过实验我们发现控制台输出了MyTest的析构函数这说明QT实际上是真的会帮助我们回收堆空间我们可以大胆的在堆空间上开辟控件 QT 窗口坐标体系 坐标体系以左上⻆为原点0,0X向右增加Y向下增加 其中Widget对象表示整个窗口 红色部分才表示Widget对象的真实部分上面蓝色的条目是OS自动加的 对于嵌套窗⼝其坐标是相对于⽗窗⼝来说的。 eg: 一个QPushButton控件是挂载到Widget对象后面的那么对于这个QPushButton控件的坐标原点就是Widget窗口的左上角顶点
http://www.ho-use.cn/article/10816668.html

相关文章:

  • 免费网站加速软件东营网站建设怎么建设
  • 网站建设最好的公司排名网站模板图
  • 漳州市住房和城乡建设局网站威海外贸建站
  • 绍兴市柯桥区建设局网站个人网站 备案 名称
  • 做网站要服务器和什么励志故事网站源码
  • 北京 成品网站无锡网站定制
  • 龙华建设局网站食品公司简介模板
  • 网站开发用户分析电商支付网站建设费进什么科目
  • 5118站长工具通过网站做国际贸易的成本
  • win7搭建网站服务器东莞培训网
  • 网站开发的图片做牛仔的时尚网站
  • 事业单位门户网站建设有网站源码怎么做网站
  • 南京网页网站制作美妆销售网站开发的目的
  • 游戏网站建设方案书网站开发销售提成
  • 网站建设总体规划包括哪些济南成之运维网络科技
  • 做的比较好的二手交易网站有哪些免费搭建个人网站的3种实用方法
  • 企业把网站关闭原因没有地址如何注册公司
  • 东莞企业网站建设多少钱湖州seo排名
  • 陕西省建设部官方网站网站建设应该学什么
  • 建设网站需求文档免费软件下载官方网站
  • 小创业公司网站怎么做企业网站推广的主要方法
  • 企业大型网站开发设计建站流程阿里做网站
  • 怎么让公司网站显示官网北京微网站建设设计服务
  • 福州网站建设公司哪个好威海建设集团网站
  • 网站建设 工作室做网站站长一年能赚多少钱
  • 网站pc端建设怎么做盗版电影网站吗
  • 厦门模板建站系统中国空间站朋友圈
  • 企业交易平台的网站制作多少钱把网站放到域名上
  • 什么是网站维护中湛江seo哪家好
  • html网站开发实用技术曲沃县建站塔山双喜