界面组件Qt Widgets入门指南,让跨平台嵌入式界面开发更简单!

2023-11-07

Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。

点击获取Qt Widget组件下载(Q技术交流:166830288)

介绍

Widgets是用Qt构建的图形用户界面(GUI)应用程序的基本构建块,每个GUI组件(如按钮、标签、文本编辑器)都是一个小部件,放置在用户界面窗口的某个地方,或者作为一个独立的窗口显示。每种类型的小部件都是由QWidget的一个子类提供的,而QWidget本身又是QObject的一个子类。

QWidget不是一个抽象类,它可以用作其他小部件的容器,并且可以轻松地将其子类化来创建新的自定义小部件。QWidget通常用于创建一个窗口,在该窗口中放置其他QWidget。

与QObjects一样,QWidgets可以与父对象一起创建,来指示所有权,确保对象在不再使用时被删除。对于小部件,这些父子关系具有额外的含义:每个子小部件显示在其父小部件占用的屏幕区域内。这意味着当您删除窗口小部件时,它包含的所有子小部件也会被删除。

编写Main函数

Qt提供的许多GUI示例都遵循这样的模式:拥有一个main.cpp文件,其中包含初始化应用程序的标准代码,以及包含应用程序逻辑和自定义GUI组件的任意数量的其他源/头文件。

main.cpp中一个典型的main()函数是这样的:

#include <QtWidgets>

// Include header files for application components.
// ...

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

// Set up and show widgets.
// ...

return app.exec();
}

首先,构造一个QApplication对象,可以使用从命令行传入的参数对其进行配置。创建并显示小部件之后,调用QApplication::exec()来启动Qt的事件循环。控制传递给Qt,直到该函数返回,最后main()返回QApplication::exec()返回的值。

真实世界的小部件示例

在这些更高级的示例中,创建小部件和布局的代码存储在其他文件中。例如,主窗口的GUI可以在QMainWindow 子类的构造函数中创建。

构建示例

如果您安装了一个二进制包来获取Qt,或者自己编译了Qt,那么本教程中描述的示例应该已经构建并准备好运行了。如果您希望修改和重新编译它们,请遵循以下步骤:

  1. 在命令提示符中,输入包含已修改示例的目录。
  2. 输入qmake并按回车键,如果这不起作用,请确保可执行文件在您的路径上,或者输入其完整位置。
  3. 在Linux/Unix和macOS上,输入make并按Return;在Windows上使用Visual Studio,输入nmake并按回车键。

在当前目录中创建一个可执行文件,在Windows上,该文件可能位于调试或发布子目录中,您可以运行此可执行文件来查看示例代码的工作情况。

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

界面组件Qt Widgets入门指南,让跨平台嵌入式界面开发更简单! 的相关文章

  • Web UI 中的 .Result 出现死锁

    我正在阅读以下主题http blog stephencleary com 2012 07 dont block on async code html http blog stephencleary com 2012 07 dont bloc
  • 将 2D 数组映射到 1D 数组

    我想用一维数组来表示一个二维数组 函数将传递两个索引 x y 和要存储的值 这两个索引代表一维数组的单个元素 并相应地设置它 我知道一维数组需要具有 arrayWidth arrayHeight 的大小 但我不知道如何设置每个元素 例如 如
  • 实体框架代码优先 - 在另一个文件中配置

    使用 Fluent API 将表到实体的映射分开的最佳方法是什么 以便它全部位于单独的类中 而不是内联在 OnModelCreating 方法中 我目前在做什么 public class FooContext DbContext prote
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • Linq Where 本地计数器关闭在 VS watch 中的结果不同

    我尝试删除前 3 个元素array与 LinQWhere扩展功能 这是一个例子 var array new 1 2 3 4 5 6 7 8 9 var count 3 var deletedTest1 0 var test1 array W
  • 身份未映射异常

    System Security Principal IdentityNotMappedException 无法转换部分或全部身份引用 该错误仅在应用程序注册后出现一次 当 SecurityIdentifier 无法映射时 例如 返回 Ide
  • 对数字进行向上和向下舍入 C++

    我试图让我的程序分别向上和向下舍入数字 例如 如果数字是3 6 我的程序应该四舍五入最接近的数字 4 如果该数字是3 4 它将向下舍入为 3 我尝试使用ceil库获取 3 个项目的平均值 results ceil marks1 marks2
  • 根据拦截和返回值自动重试客户端WCF调用

    是否可以拦截 WCF 调用的结果并重试该操作 例如 操作的返回值可能包含状态代码 指示我传递到原始调用的会话令牌已过期 在这种情况下 我可以检索新的会话令牌并使用新的会话令牌重试调用 是否可以通过使用 WCF 拦截返回值 检查它 然后以对操
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • 如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

    我正在尝试使用 clang tidy 来强制执行 C 核心指南 虽然它确实有很多有效点 但有一件事我无法真正解决 dlsym 返回一个void 我需要以某种方式将其转换为正确的函数指针 为此 我使用reinterpret cast 由于指南
  • 抽象类和接口之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 接口与基类 https stackoverflow com questions 56867 interface vs base class 我不明白抽象类和接口之间的区别 我什么时候需要使用哪种字体
  • 标准 C 中的 sizeof 与 sizeof()? [复制]

    这个问题在这里已经有答案了 我看到一些直接使用 sizeof 的代码 想知道它是否是标准 C 令我惊讶的是 它运行得很好 这是一个例子 include
  • 如何在 C++ 中使用 PI 常数

    我想在一些 C 程序中使用 PI 常数和三角函数 我得到三角函数include
  • OpenMP C 程序运行速度比顺序代码慢

    我是 OpenMP 的新手 正在尝试并行化 Jarvis 的算法 然而事实证明 与顺序代码相比 并行程序花费的时间要长 2 3 倍 难道问题本身就不能并行化吗 或者我并行化它的方式有问题 这是我针对该问题的 openMP 程序 其中有 2
  • 通过 MSBuild 调用 cl.exe 时无限期挂起

    我正在尝试在我的 主要是 C 项目上运行 MSBuild 想象一下一个非常庞大的代码库 Visual Studio 2015 是有问题的工具集 Windows 7 SP1 和 VS 2015 更新 2 即使使用 m 1 从而迫使它仅使用一个
  • 为什么我不能在扩展 List 的类中调用 OrderBy?

    我有一堂课 Deck 其中包含一个名为的方法Shuffle 我正在致力于重构Deck延长List
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur
  • 如何仅更改 DateTime 的日期部分,同时保留时间部分?

    我在代码中使用了很多 DateTime 我想将这些日期时间更改为我的特定日期并保留 时间 1 2012 02 02 06 00 00 gt 2015 12 12 06 00 00 2 2013 02 02 12 00 00 gt 2015
  • 在 C# 中读取/写入命令行程序

    我正在尝试与 C 的命令行程序进行对话 它是一个情绪分析器 它的工作原理如下 CMD gt java jar analyser jar gt Starting analyser 这是我想从我的 C 程序插入内容的地方 例如 I love y

随机推荐

  • KNX协议入门

    KNX协议入门 转自 https wenku baidu com view 65b0a25a55270722182ef706 html 如有侵权 请联系qq 2453419889 我将立即删除 一 KNX技术简介 KNX通过一条总线将各个分
  • Dapper功能讲解

    简述 适用特性 使用Dapper流程 代码示例 简述 Dapper是一个轻量级的ORM工具 ORM框架的核心思想是对象关系映射 ORM是将表与表之间的操作 映射成对象和对象之间的操作 就是通过操作实体类来达到操作表的目的 从数据库提取的数据
  • [637]文件或目录损坏且无法读取CHKDSK修复方法

    文件或目录损坏且无法读取 不要太担心是出现了磁盘坏道 也许只是小小的存储问题 解决方法很简单 用chsdsk命令即可 方法如下 开始 运行 输入cmd 输入chkdsk 盘符 f 例如 chkdsk c f 等命令运行完即可 注意 冒号后面
  • matlab中size()的用法

    size A 设有一矩阵为A 则size A 返回的是一行向量 该行向量的第一个元素时矩阵的行数 第二个元素是矩阵的列数 size A 1 获取矩阵A的行数 size A 2 获取矩阵A的列数
  • 数学的1000+篇文章总结

    数学的1000 篇文章总结 本文收集和总结了有关数学的1000 篇文章 由于篇幅有限只能总结近期的内容 想了解更多内容可以访问 http www ai2news com 其分享了有关AI的论文 文章 图书 query 第13章 爱因斯坦 量
  • C#实现程序的版本升级更新

    我们做了程序 不免会有版本升级 这就需要程序有自动版本升级的功能 那么看看我是如何实现程序自动更新的 直接上代码 using System using System Collections Generic using System Text
  • 数学建模学习2论文排版

    如何写论文 一 四点注意事项 一 标题与正文层次分明 二 正文排版紧凑 三 表格与图片格式 四 公式编辑 二 如何写标题 一 要求 二 格式及示例 三 如何写摘要 一 要求 二 格式及示例 1 总体格式图 2 开头段模板 3 中间段模板 4
  • 机器学习笔记-感知机对偶形式

    文章目录 前言 一 感知机对偶形式 二 感知机对偶形式的实现 总结 前言 感知机模型是有两种形式的 上一篇文章中详细学习了感知机的原始形式数学模型 我们知道 感知机应该还有对偶形式 这篇文章就来记录一下感知机对偶形式的的数学模型 一 感知机
  • Object.entries()

    Object entries 方法返回一个给定对象自身可枚举属性的键值对数组 其排列与使用 for in 循环遍历该对象时返回的顺序一致 区别在于 for in 循环还会枚举原型链中的属性 语法 Object entries obj 参数
  • 构造函数与析构函数的保护权限

    通常我们如果希望对象只在堆上创建 我们会将析构函数定义为protect或private类型 这种情况下我们还要添加一个函数来析构对象 因为此时在类外部无法使用delete释放对象 因为析构函数被保护 那么究竟为什么限制析构函数的访问权限可以
  • 下载网页视频简单的办法之一

    下载网页视频简单的办法之一 下载小网站网页视频的简单办法之一 添加插件 使用方法 局限性 下载小网站网页视频的简单办法之一 经常在小网站 比如91xxx youxxxx 上看到喜欢的小视频 想要收藏 你懂的 无赖很多都要VIP才给下载 以前
  • kali_linux (install版)移动硬盘(物理机)安装记录

    作者 瓴 时间 2023 04 23 kali linux install版 移动硬盘 物理机 安装问题记录 1 安装介绍 1 1 相关参数 2 kali 安装 2 1 制作系统启动U盘 2 2 移动硬盘分区 2 2 系统安装 2 3 引导
  • UE4_异步_数据处理(Json)

    如果一个数字城市demo 需要将第三方海量的数据进行处理展示 将数据的处理放在GameThread 上显然是不合理 这个时候需要用多线程解析数据 防止游戏线程的阻塞 关于异步和多线程 前两天面试被别人问到一个问题 异步和多线程的区别 面试的
  • 代码静态测试工具

    Ounec5 0 扫描语言VB C C C Java 属于付费工具 Coverity Prevent 扫描语言有C C C Java 属于付费工具 Stake SmartRiskAnalyzer 扫描语言C C Java 属于付费工具 Ra
  • 【缓存】一种新的缓存 Caffeine Cach 介绍

    1 概述 转载 真正的缓存之王 Google Guava 只是弟弟 Guava Cache 他的优点是封装了get put操作 提供线程安全的缓存操作 提供过期策略 提供回收策略 缓存监控 当缓存的数据超过最大值时 使用LRU算法替换 这一
  • upload-labs通关秘籍和安装环境

    upload labs通关 一 什么是upload labs 二 漏洞 三 安装环境 四 小试牛刀 第一关 pass 01 客户端检测绕过 js检测 第二关 pass 02 content type 服务器端检测 MIME 类型 第三关 上
  • element-ui组件学习

    element ui组件的大致分类 element ui的组件大致分为以下几类 Basic Form Data Notice Navigation Other 组件分类的大致意思 basic组件类型 是一些关于页面布局 按钮和icon等相关
  • 后台数据转换成json数组字符串到前端方法

    1 将结果集ResultSet转化为List集合 对结果集转换成list集合 public List
  • window丢失msvcp90.dll怎么办

    今天在使用py2exe生成编译的时候出现了 No such file or directory msvcp90 dll 下面是解决的方法 1 首先把msvcp90 dll下载到本机 这个就要去网上自己找一下了 2 将下载好的 msvcp90
  • 界面组件Qt Widgets入门指南,让跨平台嵌入式界面开发更简单!

    Qt 是目前最先进 最完整的跨平台C 开发工具 它不仅完全实现了一次编写 所有平台无差别运行 更提供了几乎所有开发过程中需要用到的工具 如今 Qt已被运用于超过70个行业 数千家企业 支持数百万设备及应用 点击获取Qt Widget组件下载