Qt 6.11 最新特性四大核心功能实例演示示例

C/C++ wes 1 day ago (2026-04-01) 20 views

一、快速安装与环境准备

  1. 下载 Qt Online Installer,安装时勾选:

    • Qt 6.11 MSVC2022 / GCC 编译套件
    • Desktop Qt 6.11 基础模块 + Quick + Quick3D + Network
  2. 打开 Qt Creator,新建 Qt Quick Application,默认工程即可兼容全部示例。
  3. 所有代码直接替换工程原有内容,一键构建运行。


二、示例 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 自动生成后端调用

  1. 准备后端api.yaml标准 OpenAPI 文档;
  2. Qt6.11 内置命令行工具一键生成:
    qtopengenerator -i api.yaml -o ./ApiClient
  3. 生成后直接调用:
#include "apiclient.h"
ApiClient client;
client.getUserInfo([](){
    qDebug()<<"接口数据读取完成";
});

无需手写 HTTP 封装,大幅节省对接后端时间。


六、新手使用小提示

  1. 路径无中文无空格,避免编译报错;
  2. 嵌入式开发优先启用 RHI 硬件渲染,省电又流畅;
  3. 旧 Qt 项目升级 6.11 只需替换模块引用,基本无缝兼容。