【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在其中的更高一层的抽象应用,以方便开发…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
