Cursor Superpowers 零基础开发 Qt 界面

Cursor Superpowers 零基础开发 Qt 界面:从技能解析到完整实战全指南

适合人群:Qt 开发新手、Cursor 新用户、想提升 GUI 开发效率的程序员

本文环境:Windows/macOS/Linux 通用、Qt5.15+/Qt6、CMake、Git、最新版 Cursor

哈喽,各位刚接触 Cursor 和 Qt 开发的小伙伴!

很多新手朋友刚用上 Cursor 的 Superpowers 插件,看着一堆技能不知道干嘛用,想开发 Qt 界面又不知道怎么把这些技能落地,踩了一堆坑。

这篇博客就从零开始,先给大家讲明白每个 Superpowers 技能到底是干嘛的、什么时候用,再带大家完整走一遍「Qt 登录界面开发」全流程,全程跟着操作就能跑通,零基础也能上手!


一、先搞懂!Cursor Superpowers 全技能解析(新手友好版)

Superpowers 内置 14 个核心技能,我把它分成了4大类,用大白话讲清楚作用和使用时机,新手不用死记硬背,收藏起来随用随查就行。

核心技能总表

技能分类 技能名称 大白话作用 新手必用触发时机
开发流程类(核心必用) brainstorming 需求拆解&方案设计,把你模糊的想法(比如"我要做个登录界面")梳理成2-3种可落地的方案,避免上来写代码走弯路 任何开发前,只要你有个想法还没落地,第一个就用它
writing-plans 把大项目拆成「2-5分钟就能做完」的小任务,明确每一步要改的文件、执行的命令、要达到的效果,新手再也不会无从下手 方案确认后,动手写代码前必用
subagent-driven-development 给每个小任务派一个专属"子代理",自动完成「写代码→测试→Git提交→自审」全流程,解放双手 有了明确的实现计划后,用它自动执行开发
executing-plans 分批执行你写好的计划,每执行完一批就给你报告结果,可控性拉满 已有现成的实现计划,需要分步执行时用
test-driven-development (TDD) 严格遵循「先写失败的测试用例→写最小实现代码→重构优化」的流程,从源头减少bug 实现任何功能、修复bug前,写业务代码前用
调试与质量类(避坑必备) systematic-debugging 按「根因调查→模式分析→假设验证→修复实现」四步定位bug,新手也能像资深工程师一样排查问题 遇到任何报错、测试失败、功能异常时用
verification-before-completion 自动执行编译、测试命令,把完整运行结果展示给你,没有实锤绝不瞎吹"功能完成了" 声称开发完成、bug修复前,必用它做最终验证
requesting-code-review 自动发起代码评审,相当于免费请了个资深工程师帮你查bug、提优化建议,新手快速提升代码水平 完成核心功能、合并代码前用
receiving-code-review 自动验证评审意见的合理性,逐项帮你实现优化并单独测试 收到代码评审反馈后用
协作与隔离类(防崩神器) using-git-worktrees 创建一个和主分支完全隔离的"沙盘工作区",你在里面随便改代码,写崩了也不影响主项目,新手再也不怕改不回去 开始新功能开发、执行实现计划前必用
dispatching-parallel-agents 给多个互不影响的任务并行派代理,同时开发多个模块,效率翻倍 有2个以上独立的开发任务,没有顺序依赖时用
finishing-a-development-branch 功能验证通过后,给你清晰的4个选项:本地合并、创建PR、保持现状、丢弃分支,不用自己敲复杂Git命令 开发完成,要处理代码合并时用
元技能 using-superpowers 技能优先检查原则,只要有1%的可能相关,就先调用对应技能,保证流程规范 新会话打开时自动触发,不用手动操作
writing-skills 自定义专属技能,比如固化团队代码规范、自动打包发布流程等 现有技能满足不了你的个性化需求时用

二、实战!用 Superpowers 完整开发 Qt 登录界面

我们以最常用的Qt登录界面为例,带大家完整走一遍Superpowers的全流程开发,全程跟着操作就能跑出可运行的程序。

2.1 前置准备(必做!不做会踩坑)

  1. 安装 Superpowers 插件

    打开 Cursor,按 Ctrl+L(Windows/Linux)/ Cmd+L(macOS)打开聊天框,输入以下命令回车,等待安装成功提示:

    复制代码
    /plugin-add superpowers
  2. 环境准备

    确保你的电脑已经安装:

    • Qt 5.15+ / Qt6
    • CMake 3.16+
    • Git
      并且已经配置好对应的环境变量(新手可以搜对应系统的Qt环境配置教程,5分钟就能搞定)。
  3. 初始化项目与Git仓库

    新建一个空文件夹(比如命名为 QtLoginDemo),在文件夹内打开终端,依次执行以下命令:

    bash 复制代码
    # 初始化Git仓库(Superpowers很多技能依赖Git,必须做!)
    git init
    # 配置忽略文件,避免编译产物、临时文件提交到Git
    echo "build/" >> .gitignore
    echo ".worktrees/" >> .gitignore
    echo "*.user" >> .gitignore
    # 提交初始版本
    git add . && git commit -m "Initial commit: 初始化Qt登录项目"

    新手注意:这一步必须做!不初始化Git仓库,worktree、代码评审等核心技能都会报错。


2.2 步骤1:需求澄清与方案设计(brainstorming 技能)

很多新手上来就写代码,写一半发现需求不对、方案选错了,白忙活半天。brainstorming 技能就是帮你先把需求理清楚,定好最优方案再动手。

操作方法
  1. 在 Cursor 中打开刚才创建的 QtLoginDemo 文件夹

  2. 打开聊天框,输入 /brainstorm 触发技能,然后附上你的需求:

    复制代码
    我想开发一个Qt登录界面,需要包含用户名输入框、密码输入框、登录按钮、登录状态提示标签;本地模拟登录验证即可,正确账号密码是admin/123456;用Qt原生风格,适配Windows和Linux系统
  3. 技能会自动帮你澄清细节、给出2-3种实现方案,这里我们推荐新手用Qt Designer + ui文件的方案(可视化布局,后续修改方便),回复AI"批准这个方案"即可。

  4. 技能会自动把最终的设计方案保存到 docs/plans/2026-xx-xx-login-design.md,并提交到Git,全程不用你手动操作。


2.3 步骤2:拆分任务,编写实现计划(writing-plans 技能)

方案定好了,不要直接写代码!writing-plans 技能会帮你把大项目拆成一个个2-5分钟就能做完的小任务,新手跟着走就行,完全不会无从下手。

操作方法

方案确认后,AI会自动触发这个技能,你也可以手动输入 /write-plan 触发。

技能会自动生成完整的实现计划,保存到 docs/plans/2026-xx-xx-login-implementation.md,内容如下:

markdown 复制代码
# Qt登录界面实现计划
## 任务列表(每步2-5分钟可完成)
1. 创建 CMakeLists.txt 项目配置文件,配置Qt依赖和编译规则
2. 创建 main.cpp 程序入口文件,初始化Qt应用和主窗口
3. 用Qt Designer创建 login.ui 界面布局文件,添加所需控件
4. 创建 Login.h 和 Login.cpp,实现登录窗口的逻辑代码
5. 实现登录验证逻辑,关联按钮点击信号与槽函数
6. 基于Qt Test编写单元测试,验证登录逻辑的正确性
7. 编译项目并运行,验证界面功能和交互效果

2.4 步骤3:创建隔离开发环境(using-git-worktrees 技能)

新手改代码最容易踩的坑:改着改着把项目改崩了,想回滚都回不去。using-git-worktrees 技能会帮你创建一个和主分支完全隔离的"沙盘工作区",你在里面随便改,写崩了也不影响主项目,安全感拉满。

操作方法

实现计划生成后,AI会自动触发这个技能,自动完成以下操作:

  1. 创建 .worktrees 隔离目录(已经配置到.gitignore,不会提交到Git)
  2. 创建新的开发分支 feature/login
  3. 把分支映射到隔离工作区,全程不用你敲一行Git命令。

新手大白话解释:相当于给你的项目复制了一个独立的副本,你在副本里开发,没问题了再合并到原项目里,完全不怕改崩。


2.5 步骤4:自动执行开发任务(subagent-driven-development 技能)

这是最爽的一步!subagent-driven-development 技能会给计划里的每个小任务,派发一个专属的子代理,自动帮你写代码、提交Git,每一步都给你报告进度,全程不用你动手。

下面是子代理自动生成的完整代码,新手可以直接对照查看:

任务1:创建 CMakeLists.txt 项目配置
cmake 复制代码
cmake_minimum_required(VERSION 3.16)
project(LoginDemo)

# 配置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Qt核心配置(自动处理MOC、UIC、RCC)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# 查找Qt依赖(Qt6把Widgets合并到Core里了,这里兼容Qt5/Qt6)
find_package(Qt5 REQUIRED COMPONENTS Widgets Test)
# 用Qt6的小伙伴,把上面一行换成下面这行即可
# find_package(Qt6 REQUIRED COMPONENTS Widgets Test)

# 生成主程序
add_executable(LoginDemo
    main.cpp
    Login.cpp
    Login.h
    login.ui
)
# 链接Qt库
target_link_libraries(LoginDemo Qt5::Widgets)
# Qt6换成:target_link_libraries(LoginDemo Qt6::Widgets)

# 生成单元测试程序
add_executable(LoginTest
    LoginTest.cpp
    Login.cpp
    Login.h
    login.ui
)
target_link_libraries(LoginTest Qt5::Test Qt5::Widgets)
# Qt6换成:target_link_libraries(LoginTest Qt6::Test Qt6::Widgets)
任务2:创建 main.cpp 程序入口
cpp 复制代码
#include "Login.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    // 初始化Qt应用
    QApplication a(argc, argv);
    // 创建登录窗口
    Login w;
    // 显示窗口
    w.show();
    // 进入应用事件循环
    return a.exec();
}
任务3:创建 login.ui 界面布局文件

新手技巧:在Cursor中右键.ui文件,选择「Open with Qt Designer」,可以可视化拖拽修改界面,不用手写XML。

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Login</class>
 <widget class="QWidget" name="Login">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>320</width>
    <height>220</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>用户登录</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QLineEdit" name="usernameEdit">
     <property name="placeholderText">
      <string>请输入用户名</string>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QLineEdit" name="passwordEdit">
     <property name="echoMode">
      <enum>QLineEdit::Password</enum>
     </property>
     <property name="placeholderText">
      <string>请输入密码</string>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QPushButton" name="loginButton">
     <property name="text">
      <string>登录</string>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QLabel" name="statusLabel">
     <property name="text">
      <string>请输入账号密码</string>
     </property>
     <property name="alignment">
      <set>Qt::AlignCenter</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
任务4:创建 Login.h 头文件
cpp 复制代码
#ifndef LOGIN_H
#define LOGIN_H

#include <QWidget>

// 前置声明ui类
QT_BEGIN_NAMESPACE
namespace Ui { class Login; }
QT_END_NAMESPACE

class Login : public QWidget
{
    Q_OBJECT

public:
    Login(QWidget *parent = nullptr);
    ~Login();

// 槽函数声明
private slots:
    // 登录按钮点击的处理函数
    void onLoginClicked();

private:
    // ui对象指针
    Ui::Login *ui;
};

#endif // LOGIN_H
任务5:创建 Login.cpp 逻辑实现
cpp 复制代码
#include "Login.h"
#include "ui_Login.h"
#include <QMessageBox>

Login::Login(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Login)
{
    // 加载ui布局
    ui->setupUi(this);
    // 关联按钮点击信号和槽函数
    connect(ui->loginButton, &QPushButton::clicked, this, &Login::onLoginClicked);
}

Login::~Login()
{
    // 释放ui对象
    delete ui;
}

// 登录按钮点击处理逻辑
void Login::onLoginClicked()
{
    // 获取输入框内容
    QString username = ui->usernameEdit->text().trimmed();
    QString password = ui->passwordEdit->text().trimmed();

    // 本地模拟登录验证
    if (username == "admin" && password == "123456") {
        // 登录成功
        ui->statusLabel->setText("登录成功!");
        // 清空输入框
        ui->usernameEdit->clear();
        ui->passwordEdit->clear();
        // 弹出成功提示
        QMessageBox::information(this, "登录成功", "欢迎您,管理员!");
    } else {
        // 登录失败
        ui->statusLabel->setText("登录失败,用户名或密码错误!");
        // 弹出错误提示
        QMessageBox::warning(this, "登录失败", "用户名或密码错误,请重新输入!");
    }
}
任务6:编写单元测试(TDD 技能)

test-driven-development 技能会自动帮你生成单元测试,验证登录逻辑是否正确,新手也能轻松学会写测试用例。

cpp 复制代码
#include <QtTest>
#include "Login.h"
#include "ui_Login.h"

class LoginTest : public QObject
{
    Q_OBJECT

private slots:
    // 测试登录成功的场景
    void testLoginSuccess();
    // 测试登录失败的场景
    void testLoginFailure();
};

void LoginTest::testLoginSuccess()
{
    Login login;
    // 输入正确的账号密码
    login.ui->usernameEdit->setText("admin");
    login.ui->passwordEdit->setText("123456");
    // 模拟点击登录按钮
    QMetaObject::invokeMethod(&login, "onLoginClicked", Qt::DirectConnection);
    // 验证状态标签是否正确
    QCOMPARE(login.ui->statusLabel->text(), QString("登录成功!"));
}

void LoginTest::testLoginFailure()
{
    Login login;
    // 输入错误的账号密码
    login.ui->usernameEdit->setText("wrongUser");
    login.ui->passwordEdit->setText("wrongPass");
    // 模拟点击登录按钮
    QMetaObject::invokeMethod(&login, "onLoginClicked", Qt::DirectConnection);
    // 验证状态标签是否正确
    QCOMPARE(login.ui->statusLabel->text(), QString("登录失败,用户名或密码错误!"));
}

// 测试程序入口
QTEST_MAIN(LoginTest)
#include "LoginTest.moc"

每完成一个任务,子代理都会自动执行 git addgit commit,每一步都有迹可循,新手完全不怕写乱了。


2.6 步骤6:完成前最终验证(verification-before-completion 技能)

代码写完了,不能直接说"完成了"!verification-before-completion 技能会自动帮你编译项目、运行测试,把完整的运行结果展示给你,确保代码能正常跑通,没有隐藏的坑。

自动执行的验证命令
bash 复制代码
# 创建编译目录
mkdir -p build && cd build
# 生成编译配置
cmake ..
# 编译项目
make -j4
# 运行单元测试
./LoginTest
正常的测试输出结果
复制代码
********* Start testing of LoginTest *********
Config: Using QtTest library 5.15.0, Qt 5.15.0
PASS   : LoginTest::initTestCase()
PASS   : LoginTest::testLoginSuccess()
PASS   : LoginTest::testLoginFailure()
PASS   : LoginTest::cleanupTestCase()
Totals: 4 passed, 0 failed, 0 skipped, 0 blacklisted, 15ms
********* Finished testing of LoginTest *********

看到全是 PASS,就说明你的代码完全没问题了!


2.7 步骤7:自动代码评审(requesting-code-review 技能)

验证通过后,requesting-code-review 技能会自动发起代码评审,相当于免费请了个资深Qt工程师帮你查代码,给你提优化建议,新手能快速提升代码水平。

示例评审反馈
  • 优化建议:可以给密码输入框添加回车触发登录的功能,提升用户体验
  • 无严重bug、无安全问题
自动优化后的代码

Login.cpp 的构造函数中添加一行代码,实现回车登录:

cpp 复制代码
Login::Login(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Login)
{
    ui->setupUi(this);
    connect(ui->loginButton, &QPushButton::clicked, this, &Login::onLoginClicked);
    // 新增:密码输入框按回车触发登录
    connect(ui->passwordEdit, &QLineEdit::returnPressed, this, &Login::onLoginClicked);
}

优化完成后,会自动提交Git,再次执行验证,确保优化没有引入新bug。


2.8 步骤8:合并代码,完成开发(finishing-a-development-branch 技能)

所有流程都走完了,finishing-a-development-branch 技能会给你4个清晰的选项,新手不用自己敲复杂的Git命令:

  1. 本地合并回 main 主分支
  2. 推送到远程仓库,创建 Pull Request
  3. 保持分支现状,稍后自行处理
  4. 丢弃本次开发的内容

我们选择「本地合并回主分支」,技能会自动帮你完成合并、清理隔离工作区、删除临时分支,全程一键完成。


三、新手必看!常见踩坑&避坑指南

  1. 报错:CMake 找不到 Qt

    解决方法:确保Qt的环境变量配置正确,Windows需要把Qt的bin目录加到PATH,Linux/macOS需要设置 CMAKE_PREFIX_PATH 为Qt的安装路径。

  2. Superpowers 技能触发没反应

    解决方法:先确认插件安装成功,重启Cursor;必须在初始化了Git的项目文件夹中打开Cursor,否则技能无法正常工作。

  3. ui文件编译报错,找不到 ui_Login.h

    解决方法:确保CMakeLists.txt中开启了 CMAKE_AUTOUIC ON,并且把login.ui加到了add_executable的源文件列表里。

  4. Git worktree 权限报错

    解决方法:关闭所有正在占用项目文件夹的程序(比如终端、资源管理器、其他IDE),再重新执行技能。


四、总结&进阶拓展

总结

我们用 Cursor Superpowers 的全流程技能,从需求澄清到最终合并,完整开发了一个可运行的Qt登录界面。整个流程规范、可控,新手跟着操作就能跑通,完全不用怕无从下手、写崩项目。

进阶拓展

  • 可以用这个流程开发更复杂的Qt界面,比如带菜单栏的主窗口、多页面切换、表格数据展示等
  • 可以结合 dispatching-parallel-agents 技能,并行开发Qt的多个模块,大幅提升开发效率
  • 可以用 writing-skills 技能,自定义Qt项目的自动打包、发布技能,一键生成安装包

如果你跟着操作遇到了问题,欢迎在评论区留言,我会一一解答!

相关推荐
用户805533698031 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner1 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz6 天前
QML Hello World 入门示例
qt
xcyxiner9 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner10 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner10 天前
DicomViewer (添加模型类)3
qt
xcyxiner11 天前
DicomViewer (目录调整) 2
qt
xcyxiner11 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00613 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术13 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript