【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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/438346.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win系统网络重置

重置网络命令&#xff1a;netsh winsock reset 输入winR 调用运行窗口&#xff0c;回车 输入重置网络命令&#xff1a;netsh winsock reset 注意空格

在Stable Diffusion WebUI中安装SadTalker插件时几种错误提示的处理方法

SD中的插件一般安装比较简单&#xff0c;但也有一些插件安装会比较难。比如我在安装SadTalker时&#xff0c;就遇到很多问题&#xff0c;一度放弃了&#xff0c;后来查了一些网上攻略&#xff0c;自己也反复查看日志&#xff0c;终于解决&#xff0c;不吐不快。 一、在Stable …

15分钟学 Python :编程工具 Idea 和 vscode 中配置 Python ( 补充 )

编程工具配置 Python 在 IDE 和 VSCode 中 在编程学习的过程中&#xff0c;选择合适的开发工具至关重要。本文将详细介绍在两种流行的IDE&#xff08;IntelliJ IDEA 和 Visual Studio Code&#xff09;中如何配置Python环境&#xff0c;帮助你更高效地进行Python开发。 一、编…

基于SSM的出租车租赁管理系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 1 选题的背景 现代社会&#xff0c;许多个人、家庭&#xff0c;因为生活、工作方式的改变&#xff0c;对汽车不再希望长期拥有&#xff0c;取而代之的是希望汽车能“召之即…

开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践指南)

DotNet Exercises介绍 DotNetGuide专栏C#/.NET/.NET Core编程常用语法、算法、技巧、中间件、类库、工作业务实操练习集&#xff0c;配套详细的文章教程讲解&#xff0c;助你快速掌握C#/.NET/.NET Core中各种编程常用语法、算法、技巧、中间件、类库、工作业务实操等等。 GitH…

【Spring Boot 入门二】Spring Boot中的配置文件 - 掌控你的应用设置

一、引言 在上一篇文章中&#xff0c;我们开启了Spring Boot的入门之旅&#xff0c;成功构建了第一个Spring Boot应用。我们从环境搭建开始&#xff0c;详细介绍了JDK的安装以及IDE的选择与配置&#xff0c;然后利用Spring Initializr创建了项目&#xff0c;分析了项目结构&am…

黑马linux笔记(转载)

学习链接 视频链接&#xff1a;黑马程序员新版Linux零基础快速入门到精通 原文链接&#xff1a;黑马程序员新版Linux零基础快速入门到精通——学习笔记 黑马Linux笔记 文章目录 学习链接01初识Linux1.1、操作系统概述1.1.1、硬件和软件1.1.2、操作系统1.1.3、常见操作系统 1.…

SSM人才信息招聘系统-计算机毕业设计源码28084

摘要 本研究旨在基于Java和SSM框架设计并实现一个人才信息招聘系统&#xff0c;旨在提升招聘流程的效率和精准度。通过深入研究Java和SSM框架在Web应用开发中的应用&#xff0c;结合人才招聘领域的需求&#xff0c;构建了一个功能完善、稳定高效的招聘系统。利用SSM框架的优势&…

数据订阅与消费中间件Canal 服务搭建(docker)

MySQL Bin-log开启 进入mysql容器 docker exec -it mysql5.7 bash开启mysql的binlog cd /etc/mysql/mysql.conf.dvi mysqld.cnf #在文件末尾处添加如下配置&#xff08;如果没有这个文件就创建一个&#xff09; [mysqld] # 开启 binlog log-binmysql-bin #log-bin/var/lib/mys…

CSP-J模拟赛三补题报告

前言 挂了110pts( ⇑ \Uparrow ⇑ \hspace{14em} 有史以来最大傻逼 T1&#xff1a; 100 p t s \color{green}100pts 100pts T2: 100 p t s → 80 p t s \color{green}100pts\color{yellow}\rightarrow\color{red}80pts 100pts→80pts T3: 100 p t s → 10 p t s \color{gre…

k8s架构,从clusterIP到光电半导体,再从clusterIP到企业管理

clusterIP作为k8s中的服务&#xff0c; 也是其他三个服务的基础 ~]$ kubectl create service clusterip externalname loadbalancer nodeport 客户端的流量到service service分发给pod&#xff0c;pod由控制器自动部署&#xff0c;自动维护 那么问题是service的可用…

【C++前缀和】1895. 最大的幻方|1781

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode1895. 最大的幻方 难度分&#xff1a;1781 一个 k x k 的 幻方 指的是一个 k x k 填满整数的方格阵&#xff0c;且每一行、每一列以及两条对角线的和 全部相…

ubuntu 设置静态IP

一、 ip addresssudo nano /etc/netplan/50-cloud-init.yaml 修改前&#xff1a; 修改后&#xff1a; # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-inits # ne…

360浏览器时不时打不开csdn

从百度或者csdn的搜索中打开&#xff0c;会发现打不开网页&#xff0c;以前也出现过&#xff0c;只是以为这篇文章被删了&#xff0c;昨天接连多个文章打不开&#xff0c;怀疑的浏览器的问题&#xff0c;复制网址到edge浏览器就打开了 刚刚又出现了&#xff0c;怀疑360会拦截某…

Elasticsearch——数据聚合、数据同步与集群搭建

目录 1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket 聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric 聚合语法1.2.5.小结 1.3.RestAPI 实现聚合1.3.1.API 语法1.3.2.业务需求1.3.3.业务实现 2.自动补全2.1.拼音分词器2.2.自定义分词器2.3.自动补全查询2.4.…

使用百度文心智能体创建多风格表情包设计助手

文章目录 一、智能定制&#xff0c;个性飞扬二、多元风格&#xff0c;创意无限 百度文心智能体平台为你开启。百度文心智能体平台&#xff0c;创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台&#xff0c;集成了先进的自然语言处理技术和人工智能技术&…

C++ STL 初探:打开标准模板库的大门

文章目录 C STL 初探&#xff1a;打开标准模板库的大门前言第一章: 什么是STL&#xff1f;1.1 标准模板库简介1.2 STL的历史背景1.3 STL的组成 第二章: STL的版本与演进2.1 不同的STL版本2.2 STL的影响与重要性 第三章: 为什么学习 STL&#xff1f;3.1 从手动编写到标准化解决方…

C++网络编程之TCP协议

概述 TCP&#xff0c;即传输控制协议&#xff0c;英文全称为Transmission Control Protocol&#xff0c;是互联网协议套件中的核心协议之一。它工作在OSI七层模型的传输层&#xff0c;也工作在TCP/IP四层模型的传输层。TCP协议的主要目的是&#xff1a;在不可靠的网络环境中提供…

腾讯一面-LRU缓存

为了设计一个满足LRU&#xff08;最近最少使用&#xff09;缓存约束的数据结构&#xff0c;我们可以使用哈希表&#xff08;HashMap&#xff09;来存储键值对&#xff0c;以便在O(1)时间复杂度内访问任意键。同时&#xff0c;我们还需要一个双向链表&#xff08;Doubly Linked …

飞创龙门双驱XYZ直线模组高精度应用实例

飞创龙门双驱XYZ直线模组集超精密定位、高动态响应和灵活配置于一体&#xff0c;适用于电子制造行业&#xff08;点胶、组装、检测&#xff09;、半导体圆晶加工、芯片封装、激光切割、激光焊接、数控机床、精密检测及科研实验等&#xff0c;满足高精度、高动态的三维定位需求&…