92 lines
2.0 KiB
Markdown
92 lines
2.0 KiB
Markdown
# QT GUI 自定义路径修改方案
|
|
|
|
## 快速修改步骤
|
|
|
|
### 第1步: 添加头文件
|
|
|
|
在 `qt_gui_demo.cpp` 第15行后添加:
|
|
|
|
```cpp
|
|
#include <QFileDialog>
|
|
#include <QMessageBox>
|
|
#include <QInputDialog>
|
|
```
|
|
|
|
### 第2步: 添加路径选项
|
|
|
|
在第278行后添加两个选项:
|
|
|
|
```cpp
|
|
path_combo_->addItem("Load from CSV");
|
|
path_combo_->addItem("Custom Spline");
|
|
```
|
|
|
|
### 第3步: 添加成员变量
|
|
|
|
在MainWindow类private部分最后添加:
|
|
|
|
```cpp
|
|
PathCurve custom_path_;
|
|
bool custom_path_loaded_ = false;
|
|
```
|
|
|
|
### 第4步: 修改 generateControl 方法
|
|
|
|
在 `if (path_type == "Circle Arc")` 之前添加:
|
|
|
|
```cpp
|
|
if (path_type == "Load from CSV") {
|
|
QString filename = QFileDialog::getOpenFileName(
|
|
this, "Open CSV", "", "CSV Files (*.csv)");
|
|
if (filename.isEmpty()) return;
|
|
if (!path.loadFromCSV(filename.toStdString(), true)) {
|
|
QMessageBox::warning(this, "Error", "Load failed!");
|
|
return;
|
|
}
|
|
QMessageBox::information(this, "OK",
|
|
QString("%1 points loaded").arg(path.getPathPoints().size()));
|
|
}
|
|
else if (path_type == "Custom Spline") {
|
|
bool ok;
|
|
int n = QInputDialog::getInt(this, "Spline", "Key points:", 4, 2, 10, 1, &ok);
|
|
if (!ok) return;
|
|
std::vector<PathPoint> kp;
|
|
for (int i = 0; i < n; ++i) {
|
|
double x = QInputDialog::getDouble(this, "Input",
|
|
QString("P%1 X:").arg(i+1), i*3.0, -100, 100, 2, &ok);
|
|
if (!ok) return;
|
|
double y = QInputDialog::getDouble(this, "Input",
|
|
QString("P%1 Y:").arg(i+1), (i%2)*3.0, -100, 100, 2, &ok);
|
|
if (!ok) return;
|
|
kp.push_back(PathPoint(x, y));
|
|
}
|
|
path.generateSpline(kp, 200, 0.5);
|
|
}
|
|
```
|
|
|
|
## 完整代码参考
|
|
|
|
见: examples/qt_gui_demo.cpp
|
|
|
|
修改位置:
|
|
- 行 15: 添加头文件
|
|
- 行 278: 添加选项
|
|
- 行 330: 修改方法
|
|
- 行 529: 添加变量
|
|
|
|
## 编译运行
|
|
|
|
```bash
|
|
cd build
|
|
cmake ..
|
|
cmake --build . --config Release · 编译到Release ,默认是Debug
|
|
./agv_qt_gui
|
|
```
|
|
|
|
## 使用说明
|
|
|
|
1. 选择 "Load from CSV"
|
|
2. 点击 "Generate Control"
|
|
3. 选择CSV文件
|
|
4. 点击 "Start Animation"
|