8616776a2467c9a340e37413be8dd51f32f5cc17
【Bug 修复】 - setAcceptDrops(true) —— 之前从未设置,导致所有拖拽事件直接被 Qt 忽略 - 新增 dragMoveEvent 覆写 —— 拖拽移动过程也要 accept,否则 dropEvent 不会触发 - 禁用所有子控件的拖拽接收 —— QTreeWidget/QListWidget/QLineEdit 等默认接受拖拽,会先拦截事件导致 MainWindow 收不到 - 同时对 viewport() 禁用拖拽,防止内部滚动区域拦截
VoiletCStudio - 紫罗兰 C 工具箱
Qt5 跨平台 C 工程配置器,自动生成 CMakeLists.txt
版本:v1.1 · 2026-04-28
🚀 功能特性
1. 工程配置管理
- ✅ JSON 格式配置文件
- ✅ 新建/打开/保存工程
- ✅ 拖拽 JSON 文件打开
- ✅ Ctrl+S 快速保存
2. 编译工具链配置
- ✅ 编译器路径选择
- ✅ 汇编器路径选择
- ✅ 链接器路径选择
- ✅ 支持 MinGW / GCC / Clang
- ✅ Windows 下自动识别 MinGW 工具链
3. 文件管理
- ✅ 虚拟目录(类似 MDK)
- ✅ .c 源文件分类管理
- ✅ .h 包含目录管理
- ✅ 库文件管理(.a/.so/.lib)
4. 编译配置
- ✅ 编译宏定义
- ✅ 自定义编译选项
- ✅ Debug / Release 模式
5. CMake 生成
- ✅ 自动生成 CMakeLists.txt
- ✅ 编译器路径在
project()之前设置,避免默认回退到 NMake - ✅ Windows 下自动指定
-G "MinGW Makefiles"生成器 - ✅ 内置一键编译(Debug / Release)
📋 使用方法
编译 VoiletCStudio
Linux:
cd VoiletCStudio
qmake
make
Windows (MSYS2/MinGW):
cd VoiletCStudio
qmake
mingw32-make
运行
./VoiletCStudio # Linux
VoiletCStudio.exe # Windows
使用流程
- 新建工程 → 输入工程名
- 配置编译器路径(Windows 选
gcc.exe) - 添加虚拟目录和 .c 源文件
- 添加包含目录和库文件
- 添加编译宏和选项
- 保存工程(JSON)
- 点击「生成 CMake」→ 自动生成 CMakeLists.txt
- 点击「编译 Debug / Release」→ 一键编译
🛠️ CMake 使用
# Linux / macOS
cmake -B build
make debug # 编译 Debug
make release # 编译 Release
# Windows (MinGW)
cmake -G "MinGW Makefiles" -B build
mingw32-make debug
mingw32-make release
📁 项目结构
VoiletCStudio/
├── src/
│ ├── main.cpp # 主程序入口
│ ├── mainwindow.cpp/h # 主窗口(含编译流程)
│ ├── projectconfig.cpp/h # 配置管理
│ └── cmakegenerator.cpp/h # CMake 生成
├── VoiletCStudio.pro # Qt 项目文件
├── README.md # 说明文档
└── 需求规格说明书.md # 详细需求文档
💻 跨平台支持
| 平台 | 编译器 | 生成器 | 状态 |
|---|---|---|---|
| Windows | MinGW (MSYS2) | MinGW Makefiles | ✅ |
| Windows | MSVC | NMake | ⚠️ 未测试 |
| Linux | GCC | Unix Makefiles | ✅ |
| macOS | Clang | Unix Makefiles | ✅ |
Windows 特别注意
- 必须安装 MSYS2 并安装
mingw-w64-gcc、mingw-w64-cmake - 编译器路径示例:
C:/msys2/mingw64/bin/gcc.exe - CMake 生成时程序自动使用
-G "MinGW Makefiles" - 构建时使用
mingw32-make而非make
📝 配置文件格式
{
"projectName": "MyProject",
"projectPath": "/path/to/project",
"outputDir": "./build",
"compilerPath": "/usr/bin/gcc",
"assemblerPath": "/usr/bin/gcc",
"linkerPath": "/usr/bin/gcc",
"virtualDirs": {
"App": {
"name": "App",
"files": ["src/main.c"]
}
},
"includeDirs": ["./include"],
"libraries": ["libmylib.a"],
"defines": ["DEBUG"],
"compilerOptions": ["-Wall"]
}
🔧 技术要点
编译器设置顺序
CMakeLists.txt 中 CMAKE_C_COMPILER 必须在 project() 之前设置,否则 CMake 会在 project() 时自动检测编译器并可能回退到不存在的 NMake。
Windows 生成器
程序通过 #ifdef Q_OS_WIN32 编译期检测平台,在 Windows 上自动:
- CMake 添加
-G "MinGW Makefiles"参数 - 构建时使用
mingw32-make替代make - 自动从编译器路径推导
CMAKE_MAKE_PROGRAM
🎯 特色
- 类 MDK 虚拟目录:像 Keil MDK 一样管理源文件
- 一键生成 CMake:自动生成完整的 CMakeLists.txt
- 真正跨平台:Windows (MinGW) / Linux / macOS 全支持,自动化平台适配
- 轻量级:纯 Qt5 实现,无额外依赖
📄 许可证
MIT License
作者:虾哥
日期:2026-04-09 · 更新:2026-04-28
Description
Languages
C++
73.2%
C
18.6%
Shell
3.9%
NSIS
3.6%
QMake
0.7%