一、快速安装与环境准备
-
下载 Qt Online Installer,安装时勾选:
- Qt 6.11 MSVC2022 / GCC 编译套件
- Desktop Qt 6.11 基础模块 + Quick + Quick3D + Network
- 打开 Qt Creator,新建 Qt Quick Application,默认工程即可兼容全部示例。
- 所有代码直接替换工程原有内容,一键构建运行。
二、示例 1:Canvas Painter 硬件加速 2D 绘制(C++)
.pro 文件追加依赖:
qmake
QT += gui widgets canvaspainter
main.cpp 完整代码:
#include <QApplication>
#include <QtCanvasPainter/QCPainterWidget>
#include <QTimer>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtCanvasPainter::QCPainterWidget w;
w.resize(800, 600);
w.show();
int radius = 50;
bool grow = true;
QTimer timer;
QObject::connect(&timer, &QTimer::timeout, [&](){
auto painter = w.beginPainting();
// 清空背景
painter->fillRect(0,0,w.width(),w.height(),Qt::white);
// 设置画笔画动态圆
painter->setBrush(QColor(30,144,255));
painter->drawEllipse(w.width()/2-radius, w.height()/2-radius, radius*2, radius*2);
w.endPainting();
// 大小动态变化
if(grow) radius +=2;
else radius -=2;
if(radius>150||radius<30) grow=!grow;
});
timer.start(30);
return a.exec();
}
效果:窗口中心动态缩放蓝色圆,全程 GPU 硬件加速,流畅不卡顿。
三、示例 2:Qt Quick 3D 开启 SSR+SSGI 光影(QML)
main.qml:
import QtQuick.Window 2.15
import QtQuick3D 6.11
Window {
width: 800
height: 600
visible: true
title: "Qt6.11 3D光影演示"
View3D {
anchors.fill: parent
PerspectiveCamera {
position: Qt.vector3d(0, 2, 10)
}
// 新版全局光影特效开关
ExtendedSceneEnvironment {
ssrEnabled: true // 屏幕空间反射
ssgiEnabled: true // 全局光照
motionBlurEnabled: true // 运动模糊抗锯齿
}
// 立方体模型
Model {
source: "#Cube"
scale: Qt.vector3d(3,3,3)
position: Qt.vector3d(0,-1,0)
materials: PrincipledMaterial {
baseColor: "#87CEFA"
roughness: 0.15
}
}
// 平面地面反射
Model {
source: "#Plane"
scale: Qt.vector3d(15,15,1)
materials: PrincipledMaterial {
baseColor: "#f0f0f0"
roughness: 0.05
}
}
DirectionalLight {
eulerRotation.x: -45
}
}
}
效果:自动开启真实反射与全局漫反射,3D 质感媲美小型游戏引擎。
四、示例 3:TaskTree 优雅异步任务流(告别回调地狱)
.pro 添加:
QT += network tasktree
main.cpp 追加:
#include <QCoreApplication>
#include <QtTaskTree/TaskTree>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QJsonDocument>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication app(argc,argv);
QNetworkAccessManager nam;
auto tree = QtTaskTree::TaskTree::create();
// 任务1:发起网络请求
auto reqTask = tree->addTask([&](){
QUrl url("https://httpbin.org/get");
return nam.get(QNetworkRequest(url));
});
// 任务2:读取并解析JSON(依赖请求完成)
auto parseTask = tree->addTask([](QNetworkReply* rep){
auto json = QJsonDocument::fromJson(rep->readAll());
rep->deleteLater();
return json.object();
}, {reqTask});
// 任务3:打印结果
auto logTask = tree->addTask([](QJsonObject obj){
qDebug()<<"解析完成:"<<obj;
}, {parseTask});
// 执行整条任务链
tree->run();
return app.exec();
}
特点:顺序依赖清晰、自动线程管理、异常统一捕获,比传统信号槽整洁百倍。
五、示例 4:OpenAPI 自动生成后端调用
- 准备后端api.yaml标准 OpenAPI 文档;
-
Qt6.11 内置命令行工具一键生成:
qtopengenerator -i api.yaml -o ./ApiClient - 生成后直接调用:
#include "apiclient.h"
ApiClient client;
client.getUserInfo([](){
qDebug()<<"接口数据读取完成";
});
无需手写 HTTP 封装,大幅节省对接后端时间。
六、新手使用小提示
- 路径无中文无空格,避免编译报错;
- 嵌入式开发优先启用 RHI 硬件渲染,省电又流畅;
- 旧 Qt 项目升级 6.11 只需替换模块引用,基本无缝兼容。