QT中代码设计和.ui文件设计的区别

2023-11-10

在面试中很多面试官经常会问到.ui和代码设计的区别,在网上一搜发现几乎没有人去解答这个问题。
首先我们看一下一个简单的deamon,分别是代码实现和.ui实现:
代码版:
在这里插入图片描述
.ui文件实现版
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过以上两种实现方式,不难发现,代码上的实现能够更精细。.ui文件的实现更快,但是代码很长,当然有好处有坏处,好处是ui_widget.h它里面支持了翻译功能,坏处是它的编码这块无法调整。
在看一个例子:
代码实现:
在这里插入图片描述
.ui实现
在这里插入图片描述
在这里插入图片描述
通过这个例子也可以印证以上的不同的说法。
其实除了以上说的不同外,.ui文件还有一个致命的不同点,在我们设计了一个自定义的QWidget后,如果需要使用它,在代码中我们直接new一个对象,设置它的相关属性就可以了。但是在.ui中需要使用这个QWidget,我们需要把它进行提升,但是提升了后就会出现一个问题,Qt的提升是针对整个软件的,当我们存在两个项目时,你会发现所有提升的控件在所有的项目中都可以看到,如果项目1使用了项目2的提升控件就会出现编译问题,还有当项目1和项目2存在相同名称的QWidget都需要变成提升控件时,这个时候就会冲突了,会被覆盖。

总结
.ui优点:
1、ui更方便,更快捷,在界面复杂度不高且不需要多平台支持的工程中,使用.ui优势更大。
2、.ui文件实现的界面,在实现国际化多语言的时候,代码量更少。
.ui缺点:
1、难以跨编码不同的平台。
2、在复杂度高的界面项目中,.ui难以实现,例如多层布局嵌套且还存在大量嵌套外控件的项目,例如多尺寸界面。
3、.ui性能相对低于代码实现,因为在ui_xxx.h中存在国际化相关代码。
4、存在多项目存在相同QWidget提升时,会出现编译问题。
5、.ui文件不支持二进制兼容。

如果还存在哪些不同,欢迎大家指正,相互学习。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT中代码设计和.ui文件设计的区别 的相关文章

  • 如何在 QtQuick 2 中对 QML TableView 进行排序?

    我想使用 Qt 5 1 实现具有自定义角色的可排序 TableView 但我不知道当用户单击标题时该怎么做才能对其进行排序 在我的 Qt pro 文件中 我添加了 android ios blackberry qtHaveModule wi
  • QML 连接:不推荐使用连接中隐式定义的 onFoo 属性

    升级到 Qt 5 15 时收到以下错误消息 QML Connections Implicitly defined onFoo properties in Connections are deprecated Use this syntax
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 如何向同一个 QMenu 添加多个 QAction?

    我正在尝试实现 Qt 菜单自定义 并且我提供了一个功能来添加相同的功能QAction在同一个人民币上下文菜单中多次 但是当我尝试这样做时 myMenu gt addAction myAction myMenu gt addAction my
  • Qt 安装程序框架 - 如何在卸载时仅删除某些文件和文件夹

    我使用 Qt 安装程序框架 如何确保在卸载时仅删除某些文件或文件夹 而不是像当前那样删除安装文件夹中的所有文件 先感谢您 您可以覆盖默认行为component createOperations对于卸载程序 然后使用手动指定每个卸载路径com
  • 如何消除 QTableWidget 中的空白?

    How do I get rid of the whitespace in my application 我想摆脱 QTableWidget 中的空白 蓝色箭头 我该怎么做 这是我的应用程序的代码 gridLayout QGridLayou
  • Qt Creator 2.8.1 Qt 5.1.1 Qt Designer Linux 显示新窗体

    我是 Qt 的初学者 所以希望这是一个容易回答的问题 我有相当多的 C 经验 这部分不是问题 我的应用程序的目的是进行代码生成 最初是为类制作头文件和实现文件 我非常喜欢 Code Blocks 上的类向导 但我认为我可以做更多的事情 我有
  • 扩展 TabViewStyle styleData

    我目前正在尝试找到一种更好的方法来执行此操作 将图标添加到选项卡 现在 我正在放弃 styleData title 以包含图标源 但如果能够扩展 styleData 就更好了 这样我就可以包含其他自定义属性 这是我当前的黑客 Tab tit
  • 面向 Delphi 开发人员的 Qt

    有人知道为 Delphi C Builder VCL 开发人员解释 Qt 的书籍或教程吗 对于具有该背景的开发人员来说 学习 Qt 的最佳方法是什么 我对如何使用 Qt 完成我知道如何在 Delphi 中完成的事情特别感兴趣 例如 Qt 相
  • 如何将枚举类传递给 QML?

    我正在学习QML with Qt并在通过时遇到一些麻烦enum class to qml 当我使用信号时int参数 一切正常 代码运行完美 But 麻烦就在这里 如果我使用信号与一些enum class我有参数undefinedqml 信号
  • 在 Windows 上从源代码构建 PhantomJS-2

    我正在尝试基于这些在 Windows 8 1 x64 上从源代码构建 PhantomJS 2 的开发版本指示 https github com ariya phantomjs wiki PhantomJS 2 但是我收到以下错误 mingw
  • 如何使用 qt 库中的调试符号为 qt 5.5 创建开发 shell

    我有一个开发外壳buildInputs条目包括qt55 qtbase 这很好用 今天 我在 qt 库中发生了段错误 我想要带有调试符号的 qt 库 我看了一下nixpkgs pkgs development libraries qt 5 5
  • MSVC C4100:“应用程序”:未引用的形式参数警告

    使用 MSVC 编译时 以下代码会生成 C4100 警告 这怎么可能 显然引用了 应用程序 class ApplicationInfo public QObject Q OBJECT public static void initializ
  • qt 如何知道按钮被点击?

    我正在尝试编写一个程序 用声音进行一些操作 我的问题是我有 3 个播放按钮和 3 个标签 我希望无论我单击 播放 按钮 都应该播放按钮附近标签中名称的声音 我有一个没有任何参数的播放插槽 那么 如何分别连接到每个播放按钮和每个标签呢 实际上
  • 如何使用bind将成员函数作为函数指针传递?

    我试图将成员函数作为函数指针传递 这样我就不需要依赖单例或全局函数来处理 Qt 5 中的 Qt 消息 据我所知 我的 std function 是正确的类型 它具有正确的签名 并且绑定应该允许我插入隐式this指针 本质上是将成员函数传递为
  • QGraphicsSimpleTextItem“无效使用不完整类型”

    我的代码如下 指针部件 h QGraphicsSimpleTextItem text 指针控件 cpp void PointerWidget placeNumbers float spacing int currentTickNumber
  • 当给定 100k 项时,QListView 需要很长时间才能更新

    我在读取文件时遇到问题 具体是我想制作一本小字典 在我需要阅读的文件中有这样的内容 a Ph P6 a snsr CA a b c fb Dj a b c book i BS A except B gate oOPa y a font kQ
  • Qt 和 MOC 的困境与简单的制作

    我想这更像是一个 GNU Make 问题 而不是 Qt 和 moc 但这里是 我有一个包含多个目录Q OBJECTS 我有一些简单的代码 它收集所有这些 例如 MOCS shell grep l Q OBJECT HEADERS Assum
  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 我如何告诉 QTableWidget 结束编辑单元格?

    我正在显示一个弹出菜单来选择 QTableWidget 中的某些值 最下面的项目是 修改列表 条目 当我选择它时 应自动出现一个新窗口 并且 QComboBox 应消失 并且单元格返回到 Qt DisplayRole 状态 现在 Qt 拥有

随机推荐

  • Spring_day01

    Spring day01 一 spring入门 1 什么是框架 源自于建筑学 隶属土木工程 后发展到软件工程领域 软件工程框架 经过验证的 具有一定功能的 半成品软件 经过验证 具有一定功能 半成品 2 框架的作用 3 spring是一个轻
  • C51单片机实验——LCD 1602液晶显示器

    实验名称 利用1602实现数字时钟 实验环境 普中实验系统 Keil Vision 4软件 实验目的 1 掌握1602液晶显示器的工作原理和接口方法 2 利用本课程前面所学的知识 实现数字时钟功能 硬件连线 LCD1602的RS R W 和
  • Arduino core for ESP8266 安装失败问题处理方法

    文章目录 目的 离线开发板数据包 鱼 安装最新开发板数据包 渔 总结 目的 理论上Arduino IDE安装开发板数据包是非常方便的 不过在国内的网络环境下有时候就会很纠结 另外Arduino IDE对于下载数据这块也存在问题 经常下着下着
  • 【LeetCode - 658】找到 K 个最接近的元素

    文章目录 1 题目描述 2 解题思路 3 解题代码 1 题目描述 2 解题思路 题目给定的函数返回的是 List 类型 List 有一个方法和字符串类似 为 subList a b 返回 list 区间 a b 的子序列 先把给定的 arr
  • xshell以及xftp免费版

    https www netsarang com zh free for home school
  • GdiPlus

    GDI是Graphics Device Interface的缩写 含义是图形设备接口 它的主要任务是负责系统与绘图程序之间的信息交换 处理所有Windows程序的图形输出 在Windows操作系统下 绝大多数具备图形界面的应用程序都离不开G
  • C ~ 文件读写

    一个文件 无论它是文本文件还是二进制文件 都是代表了一系列的字节 如何创建 打开 关闭文本文件或二进制文件 C 语言不仅提供了访问顶层的函数 也提供了底层 OS 调用来处理存储设备上的文件 打开文件 可以使用 fopen 函数来创建一个新的
  • 二叉树-判断另一棵树的子树(Java)

    另一棵的子树 力扣572题 题目 给你两棵二叉树 root 和 subRoot 检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树 如果存在 返回 true 否则 返回 false 二叉树 tree 的一棵子树包括 t
  • 关于qt.qpa.plugin: Could not load the Qt platform plugin “windows“ in ““ even though it was found.问题

    将如下三个文件 Anaconda3 Lib site packages PySide2 plugins platforms qminimal dll Anaconda3 Lib site packages PySide2 plugins p
  • HTML标签的语法格式

    HTML 中的标签就像关键字一样 每个标签都有自己的语义 含义 例如 p 标签代表段落 b 标签代表加粗 根据标签的不同 浏览器会使用不同的方式展示标签中的内容 在实际开发中 有时我们也将 HTML 标签称为 HTML 元素 HTML 标签
  • 在Makefile中无缝连接字符串

    今天在写Makefile时 忽然遇到了一个问题 如何把几个字符串无缝的连接起来 我自然而然的想到了使用 比如 1 2 3 4 5 6 7 8 9
  • IDEA实用插件

    目录 1 Convert YAML and Properties File 2 GitToolBox 3 JPA Buddy 4 Translation 5 iBATIS MyBatis plugin 6 lombok 7 Backgrou
  • Docker 的使用

    docker 的使用 什么是镜像 镜像是一个文件系统 提供了容器运行时需要用到的文件和参数配置 相当于安装操作系统时需要用到 ISO 文件 1 创建docker镜像 并放在容器中 创建自己的镜像 docker create it ubunt
  • PS透明屏,在科技展示中,有哪些优点展示?

    PS透明屏是一种新型的显示技术 它将传统的显示屏幕与透明材料相结合 使得屏幕能够同时显示图像和透过屏幕看到背后的物体 这种技术在商业展示 广告宣传 产品展示等领域有着广泛的应用前景 PS透明屏的工作原理是利用透明材料的特性 通过控制屏幕上的
  • Mysql -- 设置中国时区时间

    Mysql 设置中国时区时间 查看mysql的时区设置 mysql gt show variables like time zone 修改mysql的时区设置 注 mysql的默认时区是UTC 8 00是中国所在时区 东八区 mysql g
  • Leetcode 21. 合并两个有序链表

    Leetcode 21 合并两个有序链表 1 问题分析 2 问题解决 3 总结 1 问题分析 题目链接 https leetcode cn com problems merge two sorted lists 本质上就是一个链表操作问题
  • 解读CUDA Compiler Driver NVCC - Ch.3

    前言 上一篇文章简单了介绍了nvcc预定义的宏 以及支持的编译阶段 对应的输入文件后缀和输出文件的默认名 本篇文章了解CUDA源文件编译的整个workflow Overview CUDA编译的工作原理如下 输入程序经过设备编译编译预处理 编
  • HTTP的报文格式、GET和POST格式解析

    TTP报文是面向文本的 报文中的每一个字段都是一些ASCII码串 各个字段的长度是不确定的 HTTP有两类报文 请求报文和响应报文 请求报文 一个HTTP请求报文由请求行 request line 请求头部 header 空行和请求数据4个
  • JSON的下划线转驼峰,驼峰转下划线

    由于遇到了奇葩甲方 需要将数据格式转成下划线的格式 但是我们项目都是按照标准驼峰格式 所以写了个工具类来转换 不仅仅限于驼峰和下划线 根据需要传入 有没有大佬把这个递归改成迭代的 使用到的依赖 fastjon google的guava工具包
  • QT中代码设计和.ui文件设计的区别

    在面试中很多面试官经常会问到 ui和代码设计的区别 在网上一搜发现几乎没有人去解答这个问题 首先我们看一下一个简单的deamon 分别是代码实现和 ui实现 代码版 ui文件实现版 通过以上两种实现方式 不难发现 代码上的实现能够更精细 u