前言
| 大家好!欢迎来到Eason_CM的BLOG。许久未见,上次发文还在寒假。如今,当我亲自走过WinDraw.h时,才发现其中的许多瑕疵与污点。首先:对于按钮的检测区域有严重BUG,而且我发现了WIN32的高级封装。不仅Dev C++ 5有,Visual Studio只需要选中WIN32支持即可。不仅界面美观,操作极简,还给了用户更大的空间与更多的控件。为此,我决定封存我的WinDraw.h,开始介绍我最新发现的QT,这个不仅不需要额外的编程基础,还可以搭建复杂界面。那么话不多说,现在开始! |
1.安装
首先,我们需要下载QT,点我下载。
然后会有一个.exe文件,运行他。
但是在下一步后需要登录,先注册账号,然后他会给你一个网站。完成验证以及信息填入后就行了。随后关闭浏览器,重启安装向导。然后登录。
然后同意开源义务,如果是个人的话直接选择“我是个人用户,我不为任何公司使用QT”。
随后输入安装地址,选择“用于6.11桌面开发的Qt库”和“设计工具”
最重要的是选择自定义安装,不然安不上VC++。
最后进入自定义安装。按照我的选择方法,如果有其他需求,按需安装即可。(未展开的是无需选择的,我这里选错了,不选Qt6.12.0-beta2,选择Qt 6.11.1)
随后一直下一步和按照流程即可。
随后是最重要的一步:在Visual Studio里选择项目,选择CMake项目,按照需求勾选。进入后,就是CMake模式了。
在CMakeLists.txt里复制以下内容:
cmake_minimum_required(VERSION 3.16) list(APPEND CMAKE_PREFIX_PATH "<你的QT安装地址>/6.11.1/msvc2022_64/lib/cmake") project(HelloQt CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) add_executable(HelloQt WIN32 "<你的主程序名>.cpp") target_link_libraries(HelloQt Qt6::Core Qt6::Gui Qt6::Widgets) # 自动部署 Qt 依赖 if(WIN32) set(WINDEPLOYQT_EXE "<你的QT安装地址>/6.11.1/msvc2022_64/bin/windeployqt.exe") add_custom_command(TARGET HelloQt POST_BUILD COMMAND "${WINDEPLOYQT_EXE}" "$<TARGET_FILE:HelloQt>" COMMENT "Deploying Qt dependencies..." VERBATIM ) endif()把<>内的内容换成你自己的就行了,不需要输入<>点击保存(CMake的编译方式是需要先保存文本文件,然后再选择主程序运行)。随后保存即可。除此以外你还需要将“你的项目名.h”里的文件写成这样或者直接COPY:
// CMakeWithinQT.h: 标准系统包含文件的包含文件 // 或项目特定的包含文件。 #pragma once #include <iostream> #include <stdlib.h> #include <time.h> #include <string> #include <string.h> #include <QApplication> #include <QWidget> #include <QPushButton> #include <QLabel> #include <QVBoxLayout> #include <QLineEdit> #include <QMessageBox> // C #ifndef _GLIBCXX_NO_ASSERT #include <cassert> #endif #include <cctype> #include <cerrno> #include <cfloat> #include <ciso646> #include <climits> #include <clocale> #include <cmath> #include <csetjmp> #include <csignal> #include <cstdarg> #include <cstddef> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #if __cplusplus >= 201103L #include <ccomplex> #include <cfenv> #include <cinttypes> #include <cstdalign> #include <cstdbool> #include <cstdint> #include <ctgmath> #include <cwchar> #include <cwctype> #endif // C++ #include <algorithm> #include <bitset> #include <complex> #include <deque> #include <exception> #include <fstream> #include <functional> #include <iomanip> #include <ios> #include <iosfwd> #include <iostream> #include <istream> #include <iterator> #include <limits> #include <list> #include <locale> #include <map> #include <memory> #include <new> #include <numeric> #include <ostream> #include <queue> #include <set> #include <sstream> #include <stack> #include <stdexcept> #include <streambuf> #include <string> #include <typeinfo> #include <utility> #include <valarray> #include <vector> #if __cplusplus >= 201103L #include <array> #include <atomic> #include <chrono> #include <condition_variable> #include <forward_list> #include <future> #include <initializer_list> #include <mutex> #include <random> #include <ratio> #include <regex> #include <scoped_allocator> #include <system_error> #include <thread> #include <tuple> #include <typeindex> #include <type_traits> #include <unordered_map> #include <unordered_set> #endif干到这里,你的基础项目就完成了。接下来的程序就在"你的项目名.cpp"内进行。