QVector<double> 转const std::vector<double>
时间: 2023-10-26 20:06:55 浏览: 265
QVector<double> 转换为 const std::vector<double> 可以使用以下方法:
1. 使用迭代器逐个将 QVector 中的元素添加到 std::vector 中,并将 std::vector 声明为 const:
```
const std::vector<double> vec(qVector.begin(), qVector.end());
```
2. 使用循环遍历 QVector 并逐个将元素添加到 std::vector 中,并将 std::vector 声明为 const:
```
const int size = qVector.size();
std::vector<double> vec(size);
for (int i = 0; i < size; ++i) {
vec[i] = qVector[i];
}
```
相关问题
void MainWindow::onTimer() { // 更新数据 for (int i = 0; i < 10000000; i++) { mYDataTol[i] = QRandomGenerator::global()->bounded(1.00); } // 绘制图形 //ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>mYDataTol)); ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())),true); ui->plot->replot(); }报错G:\QTproject\TestTo10million\TestTo10million\qcustomplot.h:5544: candidate function not viable: no known conversion from 'bool' to 'const QVector<double>' for 2nd argument
这个报错信息提示 `setData()` 函数的第二个参数需要传递的是 `QVector<double>` 类型的数据,而你传递了一个 `bool` 类型的数据,导致类型不匹配。
解决方法是将第二个参数改为 `false` 或者省略第二个参数。`false` 表示不更新曲线,而 `true` 表示更新曲线。如果你只是想更新数据,而不需要更新曲线,那么可以将第二个参数设置为 `false`,如下所示:
```
ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())), false);
```
如果你需要更新曲线,请将第二个参数设置为 `true` 或者省略第二个参数,如下所示:
```
ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())));
```
这样就可以解决这个报错了。
ui->plot->graph(0)->setData(QVector<double>::fromStdVector(mYDataTol));这句话报错G:\QTproject\TestTo10million\TestTo10million\mainwindow.cpp:96: error: no matching function for call to 'QVector<double>::fromStdVector(QVector<double>&)' ..\TestTo10million\mainwindow.cpp: In member function 'void MainWindow::onTimer()': ..\TestTo10million\mainwindow.cpp:96:73: error: no matching function for call to 'QVector<double>::fromStdVector(QVector<double>&)' ui->plot->graph(0)->setData(QVector<double>::fromStdVector(mYDataTol)); ^
这个错误提示是因为QVector<double>::fromStdVector需要一个const std::vector<double>&类型的参数,而你传入的是一个非const的QVector<double>&类型的参数mYDataTol。你可以将mYDataTol转换成const std::vector<double>&类型,然后再传入QVector<double>::fromStdVector。尝试修改成如下代码:
```
ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())));
```
这里使用std::vector的构造函数将QVector<double>转换成std::vector<double>类型,然后再传入QVector<double>::fromStdVector。
阅读全文