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

【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,确保编译器可用,以进行项目的编译。
  • 保存并关闭
    • 保存更改并关闭所有窗口。

以下是整理后的文章结构,确保两种实现的效果相同,代码简洁,解释充分,包含详细的中文注释。

程序编写

创建项目结构

假设你的项目结构如下:

/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 的步骤如下&#xff1a; 下载 Qt 安装程序 访问 Qt 的官方网站&#xff1a;Qt Downloads。点击“Download”按钮&#xff0c;下载 Qt Online Installer&#xff08;在线安装程序&#xff09;。 运行安装程序 双击下载的 QtInstaller.exe 文件…...

Python编码系列—Python备忘录模式:掌握对象状态保存与恢复技术

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…...

linux常用命令汇编(持续更新)

一、用户提示符 # root账号提示符 $ 普通用户提示符 二、关闭计算机 shutdown&#xff08;安全有序地关闭计算机&#xff09; 语法&#xff1a;shutdown [options] [time] [message] shutdown -h now #立即关机&#xff08;--halt/终止&#xff09; shutdown -r now #重…...

AI面试指南:AI工具总结评测,助力求职季

AI面试指南&#xff1a;AI工具总结评测&#xff0c;助力求职季 摘要&#xff1a; 在竞争激烈的AI领域秋招季&#xff0c;准备充分并借助高效工具是提升面试通过率的关键。本文主要介绍一些针对秋招的AI面试工具和学习资源&#xff0c;分为简历优化、面试助手、手撕代码练习三个…...

大二考核题解

大二考核题解 题号题目考察知识点A有意思的监考二分答案B海绵宝宝的数独DFSC走楼梯递推D碱基配对kmpE好简单的题啊&#xff0c;写它&#xff01;最短路 写在前面&#xff1a; 整体难度不大&#xff0c;代码能力需要一些&#xff0c;正常来说至少要会3题以上 A 有意思的监考 …...

深入解析:Kubernetes 如何使用 etcd 作为配置中心和注册中心

在 Kubernetes 中&#xff0c;etcd 是核心的分布式存储组件&#xff0c;负责存储和管理集群的所有配置信息、状态数据以及服务注册信息。etcd 的高可用性和强一致性使得它成为 Kubernetes 的 “source of truth”&#xff0c;确保集群能够动态、高效地管理资源&#xff0c;并保…...

MQ高级:RabbitMQ小细节

在之前的学习中&#xff0c;我们只介绍了消息的发送&#xff0c;但是没有考虑到异常的情况&#xff0c;今天我们就介绍一些异常情况&#xff0c;和细节的部分。 目录 生产者可靠性 生产者重连 生产者确认 MQ可靠性 持久化 Lazy Queue 消费者可靠性 消费者确认机制 失…...

期权卖方怎么选择权利金高的品种,期货VIX高低对行情有什么影响

VIX指数——全称为芝加哥期权交易所市场波动率指数&#xff0c;俗称恐慌指数。 是衡量波动性的重要指标。VIX指数上升&#xff0c;预期未来市场波动性会增加。VIX指数下降&#xff0c;预期未来市场波动性会降低。 期货VIX指数最新价格排序 期权卖方尽量选择期货VIX指数在25以…...

内存对齐的原理和使用

1. 什么是内存对齐&#xff1f; 内存对齐是指将数据存储在内存中时&#xff0c;按照数据类型的大小&#xff0c;将数据放在特定的内存边界上。例如&#xff0c;4 字节的 int 通常放在能够被 4 整除的地址上&#xff0c;8 字节的 double 则放在能被 8 整除的地址上。 2. 为什么…...

搭建企业级私有仓库harbor

华子目录 harbor简介实验环境准备下载软件包安装docker-cehosts解析 实验步骤配置https加密传输解压进入解压目录&#xff0c;修改文件配置启动harbor 测试客户端配置harbor本地加速器注意 通过docker compose管理harbor harbor简介 harbor是由wmware公司开源的企业级docker r…...

互联网前后端分离的开发场景,一般会员和数据权限的判断是放在前端还是后端?

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…...

李宏毅机器学习2022-HW8-Anomaly Detection

文章目录 TaskBaselineReportQuestion2 Code Link Task 异常检测Anomaly Detection 将data经过Encoder&#xff0c;在经过Decoder&#xff0c;根据输入和输出的差距来判断异常图像。training data是100000张人脸照片&#xff0c;testing data有大约10000张跟training data相同…...

用户体验分享 | YashanDB V23.2.3安装部署

近期崖山新版体验过程中&#xff0c;总能看到用户提问&#xff1a;openssl版本问题、monit命令找不到问题、yashan用户权限问题、数据库重装问题 今日整理了多位用户的安装经验&#xff0c;希望能够帮助到大家~ 1.Lucifer三思而后行 &#xff1a;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&#xff08;V1.4.5&#xff09; 版本更新&#xff0c;新增 Ranger、Solr DataLight 迎来了重大的版本更新&#xff0c;现已发布 V1.4.5 版本。本次更新对平台进行了较多的功能拓展和优化&#xff0c;新增了对 Ranger 和 Solr 服务组件的支持&#xff0c;同时对多项已…...

深度解析:Python蓝桥杯青少组精英赛道与高端题型概览

目录 一、蓝桥杯青少组简介二、赛项组别与年龄范围三、比赛内容与题型1. 基础知识范围2. 题型设置2.1 选择题2.2 编程题 3. 考试时长 四、奖项设置与激励措施五、总结 一、蓝桥杯青少组简介 蓝桥杯全国软件和信息技术专业人才大赛&#xff08;简称“蓝桥杯”&#xff09;是由工…...

如何使用SCCMSecrets识别SCCM策略中潜在的安全问题

关于SCCMSecrets SCCMSecrets是一款针对SCCM策略的安全扫描与检测工具&#xff0c;该工具旨在提供一种有关 SCCM 策略的全面安全检测方法。 该工具可以从各种权限级别执行&#xff0c;并将尝试发现与策略分发相关的潜在错误配置。除了分发点上托管的包脚本外&#xff0c;它还将…...

Qt 信号重载问题--使用lambda表达式--解决方法

在connect()中&#xff0c;使用lambda表达式时遇到信号重载&#xff0c;无法识别使用哪个参数时&#xff0c;可通过以下方法处理&#xff1a; 1. 使用QOverload: Qt5.7才有 connect(comboBox,QOverload<int>::of(&QComboBox::currentIndexChanged), [](int index)…...

并行编程实战——TBB框架的应用之一Supra的基础

一、TBB的应用 在前面分析了TBB框架的各种基本知识和相关的基础应用。这些基础的应用很容易通过学习文档或相关的代码来较为轻松的掌握。为了能够更好的理解TBB框架的优势&#xff0c;这里从一个开源的应用程序来分析一下TBB在其中的更高一层的抽象应用&#xff0c;以方便开发…...

OpenClaw 如何实现任务恢复与失败重试?

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…...

【东亚美学AI化里程碑】:全球首份Midjourney Sumi-e风格Prompt工程白皮书(附东京艺术大学合作验证的17组对比测试数据)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;东亚美学AI化的范式跃迁 东亚美学传统强调“留白”“气韵”“物哀”与“间”&#xff08;ma&#xff09;等非显性结构&#xff0c;其核心并非形式完备性&#xff0c;而在于感知张力与意义生成的临界状态…...

OFIRM 视角下的多重宇宙:双拐点确认度增长模型之本宇宙V4.1开篇,我提出一个深刻的哲学问题:如果宇宙全部演化都可以被一个数学公式精确描述,那么人类独立意识应该如何定位?我思考一夜,越想越觉得恐怖

OFIRM 视角下的多重宇宙&#xff1a;双拐点确认度增长模型之本宇宙V4.1开篇&#xff0c;我提出一个深刻的哲学问题&#xff1a;如果宇宙全部演化都可以被一个数学公式精确描述&#xff0c;那么人类独立意识应该如何定位&#xff1f;我思考一夜&#xff0c;越想越觉得恐怖 问&am…...

【独家首发】Sora 2正式版未公开能力清单:原生支持3D空间锚点+时间轴语义编辑+版权水印嵌入(附OpenAI内部文档节选)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Sora 2正式版核心能力全景概览 多模态时序理解与生成一体化 Sora 2正式版突破性地将文本、图像、音频及物理运动参数统一编码至共享时空潜空间&#xff0c;支持长达120秒、1080p分辨率的连贯视频生成。…...

应用间自动化网关:构建私有化、可编程的跨平台工作流中枢

1. 项目概述与核心价值最近在折腾一些跨平台、跨设备的自动化流程&#xff0c;发现一个痛点&#xff1a;不同应用、不同服务之间的数据流转&#xff0c;经常需要手动“搭桥”。比如&#xff0c;想把手机上的一个链接快速推送到电脑上处理&#xff0c;或者把某个文档从A服务同步…...

从ShareGPT项目拆解现代全栈开发:Next.js、Serverless与Chrome扩展实战

1. 项目概述与核心价值如果你和我一样&#xff0c;经常在ChatGPT里进行一些天马行空的对话&#xff0c;从构思一部科幻小说的世界观&#xff0c;到一步步推导一个复杂的编程问题&#xff0c;再到让它扮演苏格拉底和你辩论哲学&#xff0c;这些对话记录本身就是宝贵的数字资产。…...

离线AI教育工具开发实战:模型轻量化、边缘计算与五大应用场景

1. 项目概述&#xff1a;当AI导师走进离线课堂“每个学生都值得拥有一位AI导师”——这个想法听起来很美好&#xff0c;但在全球范围内&#xff0c;一个残酷的现实是&#xff1a;稳定、高速的网络连接并非理所当然。在许多乡村学校、资源匮乏的地区&#xff0c;甚至在城市里信号…...

时间序列自监督学习实战:VIbCReg框架迁移与性能优化

1. 项目概述&#xff1a;当计算机视觉的自监督学习遇上时间序列在机器学习领域&#xff0c;获取高质量、大规模的标注数据一直是个老大难问题&#xff0c;尤其是在时间序列分析这个方向。无论是工业设备的振动监测、医疗心电信号分析&#xff0c;还是金融市场的波动预测&#x…...

Modbus RTU 与 Modbus TCP 深入指南-结束语

结束语本指南涵盖了Modbus RTU和Modbus TCP的物理层、数据链路层、报文格式、CRC算法、通信模型、功能码详解、性能优化、安全加固、故障排查、工程实践、过渡策略及现代替代方案。核心要点回顾&#xff1a;RTU&#xff1a;串口&#xff0c;远距离&#xff0c;简单可靠&#xf…...

Windows 11优化终极指南:使用Win11Debloat一键提升电脑性能51%

Windows 11优化终极指南&#xff1a;使用Win11Debloat一键提升电脑性能51% 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutte…...