Qt中C++代码搭配UI文件实现交互界面

这篇具有很好参考价值的文章主要介绍了Qt中C++代码搭配UI文件实现交互界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

第一章 Qt中C++代码搭配UI文件实现交互界面

第二章 Qt中多ui使用及简单布局实现交互界面


文章目录

一、关于Qt中的UI文件

二、创建一个基本的Qt工程

1.创建工程时,选择不生成ui文件

2.工程内容

3.构建并运行这个工程

4.实现并添加UI文件

三.使用这个新增的UI

四.编译运行

总结

文章预告


        前一段时间,被抽调到另一个测试项目,工作内容是,基于现有的一份Qt实现的工具代码,按照UI/UE设计做UI优化。做软件开发的同行都知道,我们最怕的是半路接手别人的项目代码,这些代码实际运行中可能很正常,但通常有一些毛病:没注释、命名不规范、逻辑混乱、没有设计文档等等。

        看了这份工具的代码,我发现这个工作看起来不是那么容易。在跟之前负责开发这个工具的同事交流后,了解到这个同事进入了一个误区,或者说对Qt了解甚少。

        Q:全部使用绝对值算窗口位置,应该花了很多时间调整的?

        A:是啊,确实花了不少时间

        Q:为什么不使用UI设计工具来实现界面呢?

        A:直接拉UI总感觉不受自己控制,最后调来调去的反而浪费时间

        A:纯UI没办法实现继承,就需要实现多个界面

        c++交互界面设计,Qt开发技巧,qt,c++,ui  

         c++交互界面设计,Qt开发技巧,qt,c++,ui

这里提到的basewidget就是下面这样的,除了QWidget还需要继承一个   JsonPhaseApi类,这个类实现了解析json内容的一些逻辑。 

     c++交互界面设计,Qt开发技巧,qt,c++,ui


一、关于Qt中的UI文件

        我们不管使用QtCreator还是QtDesigner实现一个UI界面,最终表现形式,都只是一个后缀为.ui的文本文件,用文本编辑器打开,这个ui文件就是一个XML格式的文件。将在QtCreator或者QtDesigner中拖拽实现的UI界面用XML格式组织起来,等待使用。

        那么Qt中会怎么使用这个ui文件呢,毕竟我们开发过程中不可能直接去读这个ui文件,简单来说,Qt在构建过程中,会将这个ui文件翻译成一个ui_打头的c++头文件,这个头文件跟基本的C++头文件没什么不一样,只是其中的代码是基于Qt的,这些代码实现了一个C++类。

二、创建一个基本的Qt工程

1.创建工程时,选择不生成ui文件

c++交互界面设计,Qt开发技巧,qt,c++,ui

2.工程内容

c++交互界面设计,Qt开发技巧,qt,c++,ui

3.构建并运行这个工程

c++交互界面设计,Qt开发技巧,qt,c++,ui

这个工程运行起来后,就是一个很简单的跟随系统样式的窗口,标题栏、最小化、最大化、关闭按钮都是跟随系统的。

4.实现并添加UI文件

        这里我们可以使用QtCreator或者QtDesigner实现一个独立的UI,然后将这个ui文件添加到这个工程中。这个UI中仅拖入一个Push Button类型的按钮,结果如下:

c++交互界面设计,Qt开发技巧,qt,c++,uic++交互界面设计,Qt开发技巧,qt,c++,ui

        这之后,我们选择清空掉build目录下所有内容,然后重新构建,这之后,就能在build目录中看到一个ui_form.h的文件,这就是上面说到的Qt自动翻译的文件,将form.ui翻译成ui_form.h,具体如下图所示:

c++交互界面设计,Qt开发技巧,qt,c++,ui

将这个文件放到Q他Creator中打开后,跟编辑模式中ui文件比对一下就能发现,Qt翻译的真准确:

c++交互界面设计,Qt开发技巧,qt,c++,uic++交互界面设计,Qt开发技巧,qt,c++,ui

三.使用这个新增的UI

        接下来就是本篇文章的核心环节,核心观点就一个,生成的UI可以当成一个普通的类使用。经过Qt翻译生成的ui_form.h,基类是UI_Form,其派生类是用Ui这个namespace包裹的From类。那么,在C++中使用一个类的传统方式是:在代码中显式的include对应的头文件,声明并定义一个类的实例,然后使用这个实例,使用这个From同样如此。

        为了将新增的UI嵌入到工程中的Widget类中使用,首先在widget.h中声明From类的对象,考虑到隐藏ui_form.h中的细节,选择前置声明的方式,具体如下图所示:

c++交互界面设计,Qt开发技巧,qt,c++,ui

        接着,在widget.cpp中包含对应的头文件,并实例化Widget类中的私有成员变量:Form类型对像ui,具体如下图所示:

c++交互界面设计,Qt开发技巧,qt,c++,ui

 ps:当然这里也需要注意在析构函数中回收ui指针指向的这段内存,这个很重要

四.编译运行

最后,就是激动人心的编译运行环节,运行结果如下图所示:

c++交互界面设计,Qt开发技巧,qt,c++,ui


总结

        使用Qt提供的UI设计器,可以简单的通过鼠标拖拽的方式来设计交互界面,优点有很多,所见即所得、速度快、简单,如果有更细的分工:比如逻辑实现与UI实现,那么代码实现与UI实现完全可以分开进行。负责逻辑实现的工程师,根据沟通好的内容(约定好UI中有哪些控件),yiju UE文档编写逻辑代码、实现信号槽等等;负责UI实现的工程师,只需要根据UI文档实现交互界面。

        当然,一个工具的界面内容很多,考虑到代码开发与后期维护,完全可以将一个完整的界面分割成一个个子界面,最后通过简单的代码将每一个子界面在主窗口中完成布局。这就像C++中实现一个功能,首先根据高内聚低耦合的原则,将这个功能拆分成多个子功能,然后将子功能抽象为一个个子类,最后将所有子类聚合为一个完整的功能。

        如果你的英文阅读水平不错的话,可以看看Qt的帮助文档中Using a Designer UI File in Your Application章节,在线帮助文档和QtCreator自带帮助文档,可以在QtCreator的帮助中直接搜索Using a Designer UI File in Your Application,如下:

c++交互界面设计,Qt开发技巧,qt,c++,ui

文章预告

下一篇文章,会说一说在一个Widget类中使用多ui以及简单代码实现布局,敬请期待!!!文章来源地址https://www.toymoban.com/news/detail-547546.html

到了这里,关于Qt中C++代码搭配UI文件实现交互界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • [QT基础]QT不同ui界面的简单切换(C++)

    [QT基础]QT不同ui界面的简单切换(C++)

            window10,QT 5.11.1,语言c++         设计两个ui界面,能实现一个ui界面到另一个ui界面的跳转。 为了以防万一,如果是第一次使用qt创建ui界面可以参考以下博客 QT界面创建 1,代码思路         两个ui界面,使用一个按钮进行页面的切换,考虑到实际的应用场景,

    2024年02月03日
    浏览(14)
  • Qt纯代码实现UI界面

    Qt纯代码实现UI界面

    设置编辑框内容的字体样式,包括加粗、下划线、斜体、蓝色、红色、黑色

    2024年01月19日
    浏览(15)
  • 基于C++和Qt封装一个简单的socket(TCP/IP)通信UI界面

    基于C++和Qt封装一个简单的socket(TCP/IP)通信UI界面

            最近在学习TCP/IP和socket套接字的有关知识,了解了三次握手四次挥手,TCP协议等等一大堆知识,但纸上得来终觉浅。网络上C++代码实现socket通信的资料很多,方便学习,于是想到自己用Qt实现一个基础的具有网络通信收发功能的服务端UI软件。进入正题:        

    2024年02月08日
    浏览(10)
  • QT练手小项目-——天气播报小狗(ui展示分析,构造实现,json格式数据分析,界面交互,天气图标处理,小狗语音)

    QT练手小项目-——天气播报小狗(ui展示分析,构造实现,json格式数据分析,界面交互,天气图标处理,小狗语音)

    前言         经过之前一段时间的QT学习,做出一个小软件来总结自己掌握关于qt的知识点。网络上有许多免费的天气接口(api),有xml格式的,也有json格式的。具体xml和json有什么区别,这里我就不去深究了,我们这里用的是一个json格式的数据,所以 重点是对json格式的数据

    2023年04月17日
    浏览(9)
  • 基于easyx和C++实现的鼠标交互界面(点击按钮)| 系统设计

    基于easyx和C++实现的鼠标交互界面(点击按钮)| 系统设计

    实现效果一览: 当鼠标放上去后效果: 代码实现及详解: 欢迎讨论!

    2024年04月27日
    浏览(12)
  • [编程语言][C++][Qt]单独添加UI文件

    [编程语言][C++][Qt]单独添加UI文件

    不知什么原因,Qt Creator并不是很完美很智能。当先写好界面类的头文件和源代码文件后,我们再添加用于可视化界面设计的UI文件时,会出现一些问题。 当使用CMake管理项目时,CMake会读取 CMakeLists.txt 文件来确定各种项目设置。需要把 MainWindow.ui 包含进项目时,在 CMakeLists.

    2024年02月07日
    浏览(10)
  • 基于Qt5的图像交互控件开发(C++实现)

    基于Qt5的图像交互控件开发(C++实现)

    博主近期看到海康VM、halcon以及visionpro视觉软件都包含一个图像智能交互控件,然后近期根据其中的技术原理,也基于Qt5仿照开发了一个类似的功能,包含矩形、旋转矩形、任意多边形、圆、圆环、扇环,直线卡尺以及圆卡尺等常用控件,图像智能交互是在计算机视觉领域中

    2024年02月05日
    浏览(27)
  • 12-2_Qt 5.9 C++开发指南_自定义Qt Designer 插件(UI 设计器自定义界面组件的 Widget 插件,直接安装到 UI设计器组件面板里,如同 Qt 自带的界面设计组件一样)

    12-2_Qt 5.9 C++开发指南_自定义Qt Designer 插件(UI 设计器自定义界面组件的 Widget 插件,直接安装到 UI设计器组件面板里,如同 Qt 自带的界面设计组件一样)

    上篇使用提升法(promotion)来创建自定义组件,本篇为 UI 设计器设计自定义界面组件的 Widget 插件,直接安装到 UI设计器的组件面板里,如同 Qt 自带的界面设计组件一样使用,在设计时就能看到组件的实际显示效果,只是编译和运行时需要使用到插件的动态链接库 (Windows 平台上

    2024年02月05日
    浏览(23)
  • Qt QWebEngine 加载网页及交互,实现C++与JS 相互调用

    Qt QWebEngine 加载网页及交互,实现C++与JS 相互调用

    本篇主要介绍QT开发过程中如何利用QWebengine加载网页,通过C++与JS 相互调用,实现QT程序与HTML网页的交互。QtWebEngine 是Qt的一个子模块,它提供了一个 Web 浏览器引擎,可以轻松地将互联网上的内容嵌入到 Qt 应用程序中。 Qt WebEngine 分为以下三大部分: Qt WebEngine Widgets Module 用

    2024年02月04日
    浏览(9)
  • Qt C++手动创建.ui文件并且与类进行绑定

    Qt C++手动创建.ui文件并且与类进行绑定

    前言:有的时候做一些新的窗口时,创建完.cpp和.h后发现没有.ui文件,有些控件纯代码实现就比较费时间,而且微调很麻烦。以下时近一段时间总结的手动给类创建.ui文件并且与所创建的类进行绑定。 1. 首先需要在项目里添加一个Qt Designer Form 选择需要的控件类型,比如QSt

    2024年02月12日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包