【Qt】无IDE的Gui程序快速开始
Qt安装
在 Windows 上安装 Qt 的步骤如下:
下载 Qt 安装程序
- 访问 Qt 的官方网站:Qt Downloads。
- 点击“Download”按钮,下载 Qt Online Installer(在线安装程序)。
运行安装程序
- 双击下载的 QtInstaller.exe文件,启动安装程序。
登录或注册 Qt 账户
- 如果你已经有 Qt 账户,可以直接登录;如果没有,需要注册一个新账户。注册是免费的,允许你下载开源版本和评估版。
选择安装方式
- 在安装程序中,选择合适的安装方式,这里选择开源版本: - 开源版本:适合个人或小型项目。
- 商业版本:需要付费,适合商业项目。
 
选择组件
-  安装程序将显示可用的 Qt 版本和组件。在这里,你可以选择: - Qt 版本:选择你想安装的 Qt 版本(例如 Qt 5.x 或 Qt 6.x),这里选择Qt 6.7。
- 编译器:选择适合你的系统的编译器(如 MSVC 或 MinGW),这里选择MinGW。
- 工具:包括 Qt Creator、Qt 文档等。
 确保勾选“Qt Creator”,这是 Qt 的集成开发环境(IDE)。 
设置安装路径
- 选择你希望安装 Qt 的目录,默认路径一般是 C:\Qt。你可以更改到你喜欢的路径。
安装
- 点击“Install”开始安装。这可能需要一些时间,具体取决于你选择的组件和你的网络速度。
配置环境变量
配置 Qt 和相关工具的环境变量是确保开发环境正常运行的重要步骤,具体步骤如下:
- 打开系统属性: - 右键点击“此电脑”,选择“属性”,需要进入系统设置以修改环境变量。
 
- 访问高级系统设置: - 点击“高级系统设置” ,环境变量的设置位于高级选项中。
 
- 打开环境变量设置: - 点击“环境变量”按钮,这里可以编辑或添加系统变量。
 
- 编辑系统变量: - 在“系统变量”中选择“Path”,点击“编辑”,Path 变量存储了可执行文件的搜索路径,修改它可以让命令行访问相应工具。
 
- 添加路径: - 添加以下目录路径: - Qt 的 bin目录,例如C:\Qt\6.7.2\mingw_64\bin,确保可以直接调用 Qt 的动态库。
- CMake 的 bin目录,例如C:\Qt\Tools\CMake_64\bin,确保可以使用 CMake 构建项目。
- Mingw 的 bin目录,例如C:\Qt\Tools\mingw1120_64\bin,确保编译器可用,以进行项目的编译。
 
- Qt 的 
 
- 添加以下目录路径: 
- 保存并关闭: - 保存更改并关闭所有窗口。
 
以下是整理后的文章结构,确保两种实现的效果相同,代码简洁,解释充分,包含详细的中文注释。
程序编写
创建项目结构
假设你的项目结构如下:
/MyQtProject
├── CMakeLists.txt
├── main.cpp
└── main.qml (仅用于 Qt Quick 项目)
Qt Widgets 实现
Qt Widgets 是 Qt 框架最早引入的 GUI 构建方式,面向传统桌面应用,基于 C++ 的类库。它提供了大量现成的控件(如按钮、文本框、菜单等),开发者通过面向对象的方式组合这些控件,构建用户界面。
CMakeLists.txt
cmake_minimum_required(VERSION 3.14)  # 设置 CMake 最小版本project(WidgetsDemo LANGUAGES CXX)    # 定义项目名称和使用的语言find_package(Qt6 COMPONENTS Widgets REQUIRED)  # 查找 Qt Widgets 模块add_executable(WidgetsDemo main.cpp)  # 添加可执行文件target_link_libraries(WidgetsDemo PRIVATE Qt6::Widgets)  # 链接 Qt Widgets 库
main.cpp
#include <QApplication>   // 引入 QApplication 类
#include <QPushButton>    // 引入 QPushButton 类
#include <QVBoxLayout>    // 引入垂直布局类
#include <QLabel>         // 引入 QLabel 类
#include <QWidget>        // 引入 QWidget 类int main(int argc, char *argv[]) {QApplication app(argc, argv);  // 创建应用实例QWidget window;                 // 创建主窗口window.setFixedSize(400, 300);  // 设置窗口大小QVBoxLayout layout;             // 创建垂直布局QLabel label("Hello, World!");  // 创建标签QPushButton button("点击我");    // 创建按钮layout.addWidget(&label);        // 添加标签到布局layout.addWidget(&button);       // 添加按钮到布局// 连接按钮点击信号与标签文本更新QObject::connect(&button, &QPushButton::clicked, [&]() {label.setText("按钮被点击了!"); // 更新文本});window.setLayout(&layout);       // 设置窗口的布局window.show();                   // 显示主窗口return app.exec();               // 启动事件循环
}
Qt Quick + QML 实现
Qt Quick 是用于开发现代化、动态用户界面的模块,适用于需要动画效果和响应式布局的应用。QML(Qt Modeling Language)是 Qt Quick 的核心语言,专门用于设计用户界面,具有声明式特点。
CMakeLists.txt
cmake_minimum_required(VERSION 3.14)  # 设置 CMake 最小版本project(QmlDemo LANGUAGES CXX)         # 定义项目名称和使用的语言find_package(Qt6 COMPONENTS Quick REQUIRED)  # 查找 Qt Quick 模块add_executable(QmlDemo main.cpp)      # 添加可执行文件target_link_libraries(QmlDemo PRIVATE Qt6::Quick)  # 链接 Qt Quick 库
main.cpp
#include <QGuiApplication>        // 引入 QGuiApplication 类
#include <QQmlApplicationEngine>  // 引入 QQmlApplicationEngine 类int main(int argc, char *argv[]) {QGuiApplication app(argc, argv); // 创建应用实例QQmlApplicationEngine engine;    // 创建 QML 引擎engine.load(QUrl(QStringLiteral("file:///path/to/your/main.qml"))); // 加载 QML 文件return app.exec();               // 启动事件循环
}
main.qml
import QtQuick 2.15               // 导入 Qt Quick 模块
import QtQuick.Controls 2.15       // 导入 Qt Quick 控件模块ApplicationWindow {visible: true                 // 窗口可见width: 400                    // 窗口宽度height: 300                   // 窗口高度title: "Qt Quick Demo"        // 窗口标题Column {anchors.centerIn: parent   // 垂直布局,居中显示Text {id: label              // 定义文本组件text: "Hello, World!" // 初始文本}Button {text: "点击我"          // 按钮文本onClicked: {label.text = "按钮被点击了!" // 更新文本}}}
}
配置和构建项目
在命令行中执行以下步骤:
创建构建目录
在项目目录下创建一个 build 目录:
mkdir build
cd build
配置项目
使用 CMake 配置项目:
cmake ..
如果一切正常,你应该会看到 CMake 输出一些配置信息,确认 Qt6 被正确找到。
构建项目
执行以下命令构建项目:
cmake --build .
运行项目
构建成功后,可以在 build 目录中找到生成的可执行文件。运行它:
./xxxxDemo
相关文章:
【Qt】无IDE的Gui程序快速开始
Qt安装 在 Windows 上安装 Qt 的步骤如下: 下载 Qt 安装程序 访问 Qt 的官方网站:Qt Downloads。点击“Download”按钮,下载 Qt Online Installer(在线安装程序)。 运行安装程序 双击下载的 QtInstaller.exe 文件…...
 
Python编码系列—Python备忘录模式:掌握对象状态保存与恢复技术
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...
linux常用命令汇编(持续更新)
一、用户提示符 # root账号提示符 $ 普通用户提示符 二、关闭计算机 shutdown(安全有序地关闭计算机) 语法:shutdown [options] [time] [message] shutdown -h now #立即关机(--halt/终止) shutdown -r now #重…...
 
AI面试指南:AI工具总结评测,助力求职季
AI面试指南:AI工具总结评测,助力求职季 摘要: 在竞争激烈的AI领域秋招季,准备充分并借助高效工具是提升面试通过率的关键。本文主要介绍一些针对秋招的AI面试工具和学习资源,分为简历优化、面试助手、手撕代码练习三个…...
大二考核题解
大二考核题解 题号题目考察知识点A有意思的监考二分答案B海绵宝宝的数独DFSC走楼梯递推D碱基配对kmpE好简单的题啊,写它!最短路 写在前面: 整体难度不大,代码能力需要一些,正常来说至少要会3题以上 A 有意思的监考 …...
深入解析:Kubernetes 如何使用 etcd 作为配置中心和注册中心
在 Kubernetes 中,etcd 是核心的分布式存储组件,负责存储和管理集群的所有配置信息、状态数据以及服务注册信息。etcd 的高可用性和强一致性使得它成为 Kubernetes 的 “source of truth”,确保集群能够动态、高效地管理资源,并保…...
 
MQ高级:RabbitMQ小细节
在之前的学习中,我们只介绍了消息的发送,但是没有考虑到异常的情况,今天我们就介绍一些异常情况,和细节的部分。 目录 生产者可靠性 生产者重连 生产者确认 MQ可靠性 持久化 Lazy Queue 消费者可靠性 消费者确认机制 失…...
 
期权卖方怎么选择权利金高的品种,期货VIX高低对行情有什么影响
VIX指数——全称为芝加哥期权交易所市场波动率指数,俗称恐慌指数。 是衡量波动性的重要指标。VIX指数上升,预期未来市场波动性会增加。VIX指数下降,预期未来市场波动性会降低。 期货VIX指数最新价格排序 期权卖方尽量选择期货VIX指数在25以…...
内存对齐的原理和使用
1. 什么是内存对齐? 内存对齐是指将数据存储在内存中时,按照数据类型的大小,将数据放在特定的内存边界上。例如,4 字节的 int 通常放在能够被 4 整除的地址上,8 字节的 double 则放在能被 8 整除的地址上。 2. 为什么…...
 
搭建企业级私有仓库harbor
华子目录 harbor简介实验环境准备下载软件包安装docker-cehosts解析 实验步骤配置https加密传输解压进入解压目录,修改文件配置启动harbor 测试客户端配置harbor本地加速器注意 通过docker compose管理harbor harbor简介 harbor是由wmware公司开源的企业级docker r…...
互联网前后端分离的开发场景,一般会员和数据权限的判断是放在前端还是后端?
推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…...
 
李宏毅机器学习2022-HW8-Anomaly Detection
文章目录 TaskBaselineReportQuestion2 Code Link Task 异常检测Anomaly Detection 将data经过Encoder,在经过Decoder,根据输入和输出的差距来判断异常图像。training data是100000张人脸照片,testing data有大约10000张跟training data相同…...
 
用户体验分享 | YashanDB V23.2.3安装部署
近期崖山新版体验过程中,总能看到用户提问:openssl版本问题、monit命令找不到问题、yashan用户权限问题、数据库重装问题 今日整理了多位用户的安装经验,希望能够帮助到大家~ 1.Lucifer三思而后行 :YashanDB 个人版数据库安装部…...
【漏洞复现】泛微OA E-Office /E-mobile/App/init.php 任意文件上传漏洞
免责声明: 本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严重后果…...
 
SpringCloudEureka实战:搭建EurekaServer
1、依赖引入 <dependencies><!-- 注册中心 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency> </dependencies> <de…...
 
DataLight(V1.4.5) 版本更新,新增 Ranger、Solr
DataLight(V1.4.5) 版本更新,新增 Ranger、Solr DataLight 迎来了重大的版本更新,现已发布 V1.4.5 版本。本次更新对平台进行了较多的功能拓展和优化,新增了对 Ranger 和 Solr 服务组件的支持,同时对多项已…...
 
深度解析:Python蓝桥杯青少组精英赛道与高端题型概览
目录 一、蓝桥杯青少组简介二、赛项组别与年龄范围三、比赛内容与题型1. 基础知识范围2. 题型设置2.1 选择题2.2 编程题 3. 考试时长 四、奖项设置与激励措施五、总结 一、蓝桥杯青少组简介 蓝桥杯全国软件和信息技术专业人才大赛(简称“蓝桥杯”)是由工…...
 
如何使用SCCMSecrets识别SCCM策略中潜在的安全问题
关于SCCMSecrets SCCMSecrets是一款针对SCCM策略的安全扫描与检测工具,该工具旨在提供一种有关 SCCM 策略的全面安全检测方法。 该工具可以从各种权限级别执行,并将尝试发现与策略分发相关的潜在错误配置。除了分发点上托管的包脚本外,它还将…...
Qt 信号重载问题--使用lambda表达式--解决方法
在connect()中,使用lambda表达式时遇到信号重载,无法识别使用哪个参数时,可通过以下方法处理: 1. 使用QOverload: Qt5.7才有 connect(comboBox,QOverload<int>::of(&QComboBox::currentIndexChanged), [](int index)…...
并行编程实战——TBB框架的应用之一Supra的基础
一、TBB的应用 在前面分析了TBB框架的各种基本知识和相关的基础应用。这些基础的应用很容易通过学习文档或相关的代码来较为轻松的掌握。为了能够更好的理解TBB框架的优势,这里从一个开源的应用程序来分析一下TBB在其中的更高一层的抽象应用,以方便开发…...
 
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
 
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
 
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
 
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
 
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
 
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
