目录


简介

为什么选择混合开发?

Cursor 的优势

  • AI 辅助代码编写,快速生成代码框架
  • 智能代码补全和重构
  • 支持多文件同时编辑
  • 强大的搜索和替换功能
  • Git 集成良好

Qt Creator 的优势

  • 完整的 Qt 项目管理
  • 可视化 UI 设计(.ui 文件)
  • 集成编译器和调试器
  • QML 预览和调试
  • 信号槽编辑器
  • 性能分析工具

混合开发的好处

  1. 利用 Cursor AI 快速编写业务逻辑
  2. 使用 Qt Creator 编译、运行和调试
  3. 在 Cursor 中管理代码版本(Git)
  4. 在 Qt Creator 中查看编译错误和运行日志
  5. 提高开发效率,减少上下文切换成本

开发环境配置

1. 安装必要软件

Qt 开发环境
1. 下载 Qt 在线安装器
   https://www.qt.io/download-qt-installer

2. 安装组件:
   - Qt 6.10.1 或更高版本
   - MinGW 64-bit 编译器(Windows)
   - Qt Creator
   - Qt Quick Controls 2
   - Qt Network
   - Qt SQL
Cursor 编辑器
1. 下载 Cursor
   https://cursor.sh/

2. 安装 C++ 扩展(可选)
   - C/C++ IntelliSense
   - Qt tools
   - CMake Tools(如果使用 CMake)

2. 项目配置

在 Qt Creator 中创建项目
1. 文件 → 新建文件或项目
2. 选择项目类型(Qt Widgets Application 或 Qt Quick Application)
3. 选择构建系统(qmake 或 CMake)
4. 配置 Kit(编译器、Qt 版本、调试器)
5. 创建项目
在 Cursor 中打开项目
1. 文件 → 打开文件夹
2. 选择 Qt 项目根目录
3. Cursor 会自动识别 C++ 和 QML 文件

3. 工作区设置

Cursor 配置
// .vscode/settings.json
{
    "files.associations": {
        "*.qml": "qml",
        "*.pro": "makefile",
        "*.pri": "makefile"
    },
    "C_Cpp.default.includePath": [
        "${workspaceFolder}/**",
        "C:/Qt/6.10.1/mingw_64/include/**"
    ],
    "C_Cpp.default.compilerPath": "C:/Qt/Tools/mingw1120_64/bin/g++.exe"
}
Qt Creator 配置
工具 → 选项:
1. Kits → 确认 Kit 配置正确
2. C++ → Code Style → 选择代码风格
3. Text Editor → 配置字体和主题
4. Build & Run → 检查编译器路径

工作流程

典型开发周期

┌─────────────────────────────────────────────┐
│  1. 在 Cursor 中编写/修改代码                │
│     - 使用 AI 生成代码框架                   │
│     - 编写业务逻辑                           │
│     - 重构和优化代码                         │
└─────────────┬───────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────────┐
│  2. 保存文件(Ctrl+S)                       │
│     - Cursor 自动保存                        │
│     - Qt Creator 检测到文件变化              │
└─────────────┬───────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────────┐
│  3. 切换到 Qt Creator                        │
│     - 查看文件是否需要重新加载               │
│     - 点击"重新加载"如果提示                 │
└─────────────┬───────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────────┐
│  4. 在 Qt Creator 中编译                     │
│     - Build → Build Project                  │
│     - 或按 Ctrl+B                            │
│     - 查看编译输出                           │
└─────────────┬───────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────────┐
│  5. 检查编译结果                             │
│     ├─ 成功 → 继续运行                       │
│     └─ 失败 → 回到 Cursor 修复错误           │
└─────────────┬───────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────────┐
│  6. 在 Qt Creator 中运行                     │
│     - Run → Run (Ctrl+R)                     │
│     - 查看应用程序输出                       │
│     - 查看调试信息                           │
└─────────────┬───────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────────┐
│  7. 测试和调试                               │
│     - 如果有 bug → 回到 Cursor 修复          │
│     - 如果需要调试 → 使用 Qt Creator 调试器  │
│     - 功能完成 → 提交 Git(在 Cursor 中)    │
└─────────────────────────────────────────────┘

具体操作步骤

步骤 1:代码编写(Cursor)

场景 1:创建新类

// 在 Cursor 中,使用 AI 生成类框架
// 提示词:创建一个名为 UserManager 的类,包含登录、注册功能

// UserManager.h
#ifndef USERMANAGER_H
#define USERMANAGER_H

#include <QObject>
#include <QString>

class UserManager : public QObject
{
    Q_OBJECT
public:
    explicit UserManager(QObject *parent = nullptr);
    
    Q_INVOKABLE bool login(const QString &username, const QString &password);
    Q_INVOKABLE bool registerUser(const QString &username, const QString &password);

signals:
    void loginSuccess();
    void loginFailed(const QString &error);

private:
    // 实现细节
};

#endif

场景 2:修改现有代码

// 在 Cursor 中选中代码,使用 AI 重构
// Ctrl+K → 输入:优化这段代码,添加错误处理

// 修改前
void loadData() {
    auto result = database.query("SELECT * FROM users");
    processResult(result);
}

// AI 自动优化后
void loadData() {
    try {
        auto result = database.query("SELECT * FROM users");
        if (!result.isEmpty()) {
            processResult(result);
        } else {
            qWarning() << "No data found";
        }
    } catch (const std::exception &e) {
        qCritical() << "Database error:" << e.what();
        emit error("Failed to load data");
    }
}
步骤 2:编译检查(Qt Creator)

切换到 Qt Creator

Alt+Tab 或 点击任务栏

编译项目

方法 1:菜单
Build → Build Project "ProjectName"

方法 2:快捷键
Ctrl+B

方法 3:工具栏
点击 "锤子" 图标

查看编译输出

窗口底部的 "编译输出" 面板
- 绿色 ✓ = 编译成功
- 红色 ✗ = 编译失败,查看错误信息
步骤 3:错误修复(Cursor)

复制错误信息

在 Qt Creator 编译输出中:
1. 右键点击错误行
2. 复制消息

在 Cursor 中修复

1. 切换回 Cursor
2. 使用 AI 修复:
   - Ctrl+K → 粘贴错误信息
   - 让 AI 分析并提供解决方案
3. 应用修复
4. 保存文件
步骤 4:运行测试(Qt Creator)

运行应用程序

方法 1:菜单
Run → Run (或 Start Debugging)

方法 2:快捷键
Ctrl+R(运行)
F5(调试运行)

方法 3:工具栏
点击绿色 "播放" 按钮

查看输出

应用程序输出面板:
- 显示 qDebug(), qInfo(), qWarning() 等输出
- 显示程序标准输出
- 显示崩溃信息
步骤 5:调试(Qt Creator)

设置断点

1. 在代码行号左侧点击
2. 红点出现 = 断点已设置

调试运行

F5 或 Debug → Start Debugging

调试操作

F10 = 单步跳过(Step Over)
F11 = 单步进入(Step Into)
Shift+F11 = 跳出(Step Out)
F5 = 继续执行
步骤 6:版本控制(Cursor)

提交代码

1. 在 Cursor 左侧点击 "源代码管理" 图标
2. 查看修改的文件
3. 暂存更改(+)
4. 输入提交消息
5. 提交(✓)

推送到远程

... 菜单 → Push

最佳实践

1. 文件组织

推荐项目结构

ProjectRoot/
├── Common/              # 共享库
│   ├── models/         # 数据模型
│   ├── protocol/       # 通信协议
│   └── constants/      # 常量定义
├── Server/             # 服务器端
│   ├── src/
│   ├── Server.pro
│   └── resources/
├── Client/             # 客户端
│   ├── src/
│   ├── qml/           # QML 文件
│   ├── Client.pro
│   └── resources/
├── docs/              # 文档
├── tests/             # 测试
└── ProjectRoot.pro    # 主项目文件

2. 代码编写建议

在 Cursor 中做

  • ✅ 编写业务逻辑代码
  • ✅ 重构和优化代码
  • ✅ 批量修改多个文件
  • ✅ 搜索和替换
  • ✅ Git 操作
  • ✅ 编写文档

在 Qt Creator 中做

  • ✅ 编译项目
  • ✅ 运行和调试
  • ✅ 查看编译错误
  • ✅ 使用信号槽编辑器
  • ✅ QML 预览
  • ✅ 性能分析

避免的操作

  • ❌ 不要在 Cursor 中尝试编译 Qt 项目
  • ❌ 不要在 Qt Creator 中进行大量代码重构
  • ❌ 不要同时在两个编辑器中编辑同一文件
  • ❌ 不要忘记保存文件就切换编辑器

3. 工作流优化

快速切换技巧

Windows:
Alt+Tab           # 切换应用程序
Win+1, Win+2      # 切换到任务栏固定的应用

快捷键设置:
- Cursor: Win+C
- Qt Creator: Win+Q

文件同步

Cursor 设置:
- 启用自动保存:files.autoSave = "afterDelay"
- 设置延迟:files.autoSaveDelay = 1000

Qt Creator 设置:
- 启用自动重新加载文件
- 工具 → 选项 → 环境 → 系统
- 勾选 "自动重新加载被外部修改的文件"

多显示器布局

推荐布局:
显示器 1: Cursor(主开发)
显示器 2: Qt Creator(编译运行)+ 浏览器(文档)

4. AI 使用技巧

有效的 AI 提示词

✅ 好的提示:
"创建一个 NetworkManager 类,负责 TCP 客户端连接,
包含 connectToServer、disconnect、sendRequest 方法,
使用 Qt 的 QTcpSocket"

❌ 不好的提示:
"写个网络类"

代码审查

选中代码 → Ctrl+K → 输入:
"检查这段代码是否有内存泄漏、线程安全问题"

重构建议

选中代码 → Ctrl+K → 输入:
"重构这段代码,使其更符合 SOLID 原则"

5. 调试技巧

日志输出

// 使用 Qt 的日志系统
#include <QDebug>

qDebug() << "调试信息";
qInfo() << "普通信息";
qWarning() << "警告信息";
qCritical() << "严重错误";

// 格式化输出
qDebug() << "User ID:" << userId << "Name:" << userName;

条件断点

在 Qt Creator 中:
1. 右键点击断点
2. 选择 "编辑断点"
3. 添加条件:userId == 123
4. 只有条件满足时才会暂停

监视变量

调试时:
1. 右键点击变量
2. 选择 "添加表达式求值器"
3. 可以监视复杂表达式

常见问题

问题 1:文件未同步

症状

  • 在 Cursor 中修改了代码
  • Qt Creator 中编译的还是旧代码

解决方案

1. 确认 Cursor 中已保存文件(Ctrl+S)
2. 在 Qt Creator 中手动重新加载:
   - Build → Clean All
   - 关闭并重新打开 Qt Creator
3. 检查文件时间戳是否更新

问题 2:编译错误

症状

  • Qt Creator 显示大量编译错误
  • 代码在 Cursor 中看起来没问题

解决方案

1. 检查 #include 路径是否正确
2. 确认 .pro 文件配置正确
3. 清理项目:Build → Clean All
4. 重新运行 qmake:Build → Run qmake
5. 重新编译:Build → Rebuild All

问题 3:QML 文件不生效

症状

  • 修改了 QML 文件
  • 运行时还是显示旧界面

解决方案

1. 确认 QML 文件已添加到 .qrc 资源文件
2. 清理项目重新编译
3. 检查 QML 缓存:
   删除 C:\Users\<用户>\AppData\Local\Temp\QtQmlCache\
4. 使用 qrc:/ 前缀访问 QML 文件

问题 4:Git 冲突

症状

  • 多人协作时出现文件冲突
  • .pro.user 文件冲突

解决方案

1. 添加 .gitignore:
*.pro.user
*.pro.user.*
build-*/
.qmake.stash

2. 解决冲突:
- 在 Cursor 中使用 Git 工具
- 选择保留的版本
- 手动合并代码

3. 避免冲突:
- 经常 pull 更新
- 及时提交本地更改
- 使用分支开发功能

问题 5:内存泄漏

症状

  • 程序运行一段时间后内存占用持续增长
  • 程序崩溃

解决方案

1. 使用 Qt 对象树管理内存:
   - 创建 QObject 时指定 parent
   - parent 删除时会自动删除子对象

2. 使用智能指针:
   #include <QSharedPointer>
   QSharedPointer<MyClass> ptr(new MyClass);

3. 使用 Qt Creator 的性能分析工具:
   - Analyze → QML Profiler
   - Analyze → Performance Analyzer

4. 检查信号槽连接:
   - 对象销毁前断开连接
   - 使用 Qt::AutoConnection

项目结构

Qt 项目文件(.pro)

# 基本配置
QT += core gui widgets network sql
CONFIG += c++17

# 目标配置
TARGET = MyApp
TEMPLATE = app

# 头文件
HEADERS += \
    src/mainwindow.h \
    src/models/user.h

# 源文件
SOURCES += \
    src/main.cpp \
    src/mainwindow.cpp \
    src/models/user.cpp

# UI 文件
FORMS += \
    ui/mainwindow.ui

# 资源文件
RESOURCES += \
    resources/resources.qrc

# 包含路径
INCLUDEPATH += $$PWD/src

# 链接库
LIBS += -L$$PWD/lib -lMyLib

资源文件(.qrc)

<RCC>
    <qresource prefix="/qml">
        <file alias="main.qml">../qml/main.qml</file>
        <file alias="Theme.qml">../qml/styles/Theme.qml</file>
    </qresource>
    <qresource prefix="/images">
        <file>images/logo.png</file>
    </qresource>
</RCC>

在 QML 中使用资源

import QtQuick 2.15

Rectangle {
    Image {
        source: "qrc:/images/logo.png"
    }
}

总结

混合开发的核心原则

  1. 明确分工:Cursor 写代码,Qt Creator 编译运行
  2. 及时保存:切换前务必保存文件
  3. 善用 AI:让 AI 帮你生成代码框架和修复错误
  4. 勤于测试:每次修改后都编译测试
  5. 版本控制:使用 Git 管理代码,及时提交

效率提升建议

  • 使用多显示器,减少窗口切换
  • 配置快捷键,提高操作速度
  • 熟练掌握两个工具的特性
  • 建立稳定的工作流程
  • 保持良好的代码组织

学习资源

  • Qt 官方文档:https://doc.qt.io/
  • Cursor 文档:https://cursor.sh/docs
  • Qt 论坛:https://forum.qt.io/
  • Stack Overflow Qt 标签

祝开发顺利!🚀

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐