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

Qt6学习入门——环境搭建

Qt6学习入门——环境搭建

简介

Qt6Qt 框架的最新主要版本,是一个跨平台的 C++ 应用程序开发框架,用于创建图形用户界面和跨平台应用程序。
我们使用的Qt6 是免费的开源版本。

关于 Qt 许可证

通过 pacman 安装的 Qt6LGPLv3 许可证的开源版本,具有以下特点:
✅ 允许的使用:
使用 - 完全免费
使用 - 可以用于商业软件开发
开源项目 - 可以用于 GPL/LGPL 项目
链接 只要动态链接 Qt 库,可以闭源分发
限制(仅针对静态链接):
如果要静态链接 Qt 库并闭源分发,需要购买商业许可证
但对于动态链接,即使是商业软件也完全免费.

跨平台支持

桌面端: Windows, Linux, macOS
移动端: Android, iOS
嵌入式系统: 各种嵌入式设备
Web: WebAssembly 支持

主要模块

核心模块

模块 功能描述
QtCore 核心非 GUI 功能
QtGui 图形界面基础
QtWidgets UI 控件库
QtQml QML 语言支持
QtQuick 现代 UI 框架

扩展模块

模块 功能描述
QtNetwork 网络编程
QtSql 数据库操作
QtMultimedia 多媒体处理
QtWebEngine 网页渲染

总结下来,非常简单,和Android开发一样,学习UI组件、网络、数据库、音视频、WebView等。

Hello World

安装命令

pacman -S mingw-w64-ucrt-x86_64-qt6

cmake

cmake_minimum_required(VERSION 3.10.0)
project(qt_learn01 VERSION 0.1.0 LANGUAGES C CXX)# ✅ 设置 C++ 标准
set(CMAKE_CXX_STANDARD 26)
set(CMAKE_CXX_STANDARD_REQUIRED ON)  # 强制使用指定标准
set(CMAKE_CXX_EXTENSIONS OFF)        # 禁用编译器扩展(使用纯标准)# 查找源文件
file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS"src/*.cpp""src/*.c"
)add_executable(qt_learn01 main.cpp ${SOURCES})target_include_directories(${CMAKE_PROJECT_NAME}PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/learn01
)# ✅ 查找 Qt6
find_package(Qt6 REQUIRED COMPONENTS Widgets)
# ✅ 链接 Qt6 库
target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Widgets)include(CTest)
enable_testing()set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

代码

#include <learn001.hpp>
#include <QApplication>
#include <QPushButton>
#include <QMessageBox>
#include <QVBoxLayout>
#include <QLabel>void handleClick(){std::cout << "Button Clicked!\n";QMessageBox::information(nullptr, "Hello", "Clicked the Button");
}int main(int, char**){QApplication app(__argc, __argv);QPushButton button("Hello World Qt6");button.resize(200, 60);button.show();QObject::connect(&button, &QPushButton::clicked, handleClick);return app.exec();
}

网络和数据库

cmake_minimum_required(VERSION 3.10.0)
project(qt_learn01 VERSION 0.1.0 LANGUAGES C CXX)# ✅ 设置 C++ 标准
set(CMAKE_CXX_STANDARD 26)
set(CMAKE_CXX_STANDARD_REQUIRED ON)  # 强制使用指定标准
set(CMAKE_CXX_EXTENSIONS OFF)        # 禁用编译器扩展(使用纯标准)# 查找源文件
file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS"src/*.cpp""src/*.c"
)add_executable(qt_learn01 main.cpp ${SOURCES})target_include_directories(${CMAKE_PROJECT_NAME}PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/learn01
)# ✅ 查找 Qt6
find_package(Qt6 REQUIRED COMPONENTS Widgets Network Sql)
# ✅ 链接 Qt6 库
target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Widgets Qt6::Network Qt6::Sql)include(CTest)
enable_testing()set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

源码

#include <learn001.hpp>
#include <QApplication>
#include <QPushButton>
#include <QMessageBox>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QObject>#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>void handleClick(){std::cout << "Button Clicked!\n";QMessageBox::information(nullptr, "Hello", "Clicked the Button");
}
bool initDatabase() {// ✅ 连接 SQLite 数据库(内存模式,也可以是文件路径)QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");// db.setDatabaseName(":memory:"); // 或 "test.db"db.setDatabaseName("test.db"); // 或 "test.db"if (!db.open()) {qDebug() << "Failed to open database:" << db.lastError().text();return false;}QSqlQuery query;// ✅ 创建表if (!query.exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);")) {qDebug() << "Create table failed:" << query.lastError().text();return false;}// ✅ 插入数据query.exec("INSERT INTO users (name) VALUES ('Alice');");query.exec("INSERT INTO users (name) VALUES ('Bob');");// ✅ 查询数据query.exec("SELECT id, name FROM users;");while (query.next()) {int id = query.value(0).toInt();QString name = query.value(1).toString();qDebug() << "User:" << id << name;}return true;
}
int main(int argc, char *argv[]){// QApplication app(__argc, __argv);// QPushButton button("Fetch Data from https://example.com");// button.resize(300, 60);// button.show();// QNetworkAccessManager* manager = new QNetworkAccessManager(&button);// QObject::connect(&button, &QPushButton::clicked, [&]() {//     QUrl url("https://www.baidu.com");//     QNetworkRequest request(url);//     QNetworkReply* reply = manager->get(request);//     QObject::connect(reply, &QNetworkReply::finished, [reply]() {//         if (reply->error() == QNetworkReply::NoError) {//             QByteArray data = reply->readAll();//             QMessageBox::information(nullptr, "Response", QString::fromUtf8(data.left(200))); // 截取前200字符//             std::cout << "Response Data: " << data.left(100000).toStdString() << "...\n";//         } else {//             QMessageBox::warning(nullptr, "Error", reply->errorString());//         }//         reply->deleteLater();//     });// });// return app.exec();// SQLQApplication app(argc, argv);QPushButton button("Init QtSQL Database");button.resize(250, 60);button.show();QObject::connect(&button, &QPushButton::clicked, [&]() {if (initDatabase()) {QMessageBox::information(nullptr, "Success", "Database initialized and queried!");} else {QMessageBox::warning(nullptr, "Error", "Database operation failed!");}});return app.exec();
}
http://www.zskr.cn/news/30026.html

相关文章:

  • 直播电商源码,就“对象”而言我们需要了解什么? - 云豹科技
  • 2025年循环烘箱厂家最新企业推荐榜,热风循环烘箱厂家,聚焦服务品质与设备竞争力深度剖析
  • 邢台华电数控:车铣复合厂家技术应用与服务能力解析
  • 2025年评价高的微动开关,防水微动开关厂家推荐及采购指南
  • 2025年10月生产计划管理咨询公司推荐:五强评测指南
  • 2025 年商用洗碗机源头厂家最新推荐排行榜:聚焦高效节能设备,助力餐饮及企事业单位选购酒店 / 学校 / 工厂 / 全自动洗碗机公司推荐
  • 2025年10月小红书代运营公司口碑榜:五家深度评测
  • Sora来袭,短视频的“iPhone时刻”还是封禁对象?
  • 2025 年最新推荐!国内球墨铸铁管厂家排行榜:市政 / 给水 / 水利工程优选优质厂家盘点
  • 2025年靠谱的铝框门阻尼铰链,衣柜阻尼铰链厂家最新权威实力榜
  • 2025年口碑好的低温高压均质机,JN1000高压均质机厂家最新推荐排行榜
  • 2025年质量好的三节同步隐藏轨,三节阻尼同步隐藏轨厂家最新用户好评榜
  • 2025年知名的货架支架铝型材深加工,铝型材深加工厂家推荐及选购指南
  • 2025年口碑好的选举旗帜定制,赛事旗帜定制厂家最新推荐排行榜
  • 2025年中铝中镁制造企业权威推荐榜单:中镁中铝/宝钢镀铝镁锌/首钢镀铝镁锌卷源头厂家精选
  • 2025 进口/国产/钨灯丝/FIB/电子/hitachi/场发射/SEM/高分子/超高分辨率/扫描电镜推荐榜:富泰微(上海)五星领衔,这些专注微观观测的仪器服务商适配多领域需求
  • 2025年10月铝材厂家推荐:市场报告与排行榜单解析
  • 2025年靠谱的缓冲隐藏轨,卫浴缓冲隐藏轨厂家推荐及选择参考
  • 2025年比较好的饰品铆钉机,科铖铆钉机厂家推荐及选择指南
  • 2025年10月精益制造咨询公司推荐:榜单级对比评价
  • 2025年口碑好的纳米大单槽,日式大单槽厂家推荐及选购指南
  • 2025 年传感器厂家最新推荐,技术实力与市场口碑深度解析磁致伸缩位移/防爆位移/防水位移/ 隔爆位移/线性位移/矿用位移传感器厂家推荐
  • 2025年知名的碳分子筛CMS-280型,碳分子筛厂家最新推荐排行榜
  • 2025年靠谱的广州工装定制,小单工装定制厂家推荐及采购指南:定制定做公司
  • 2025年知名的耙犁片,圆盘耙片犁片推荐TOP品牌厂家:实力源头加工公司
  • 2025年优质的机器人装箱机,装箱机厂家推荐及选择建议:直销制造
  • 2025 年青岛乐泰胶水厂家推荐:英泰工贸三十年行业积淀,全系列胶品与定制化解决方案供应指南
  • 2025 年上海乐泰胶水经销商推荐,英泰工贸以全系列产品、专业技术支持服务多行业
  • maven pom档案中<dependencyManagement><dependencies><dependency> 三者的区别
  • 2025年知名的激光打孔机,大幅面激光裁床激光打孔机厂家最新推荐排行榜:实力源头加工