initial
This commit is contained in:
91
docs/custom_path/apply_qt_modifications.md
Normal file
91
docs/custom_path/apply_qt_modifications.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# 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"
|
||||
Reference in New Issue
Block a user