ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())));报错G:\QTproject\TestTo10million\TestTo10million\qcustomplot.h:5544: candidate function not viable: requires at least 2 arguments, but 1 was provided
时间: 2024-03-16 17:43:57 浏览: 118
这个报错提示是因为 `setData()` 函数需要传递两个参数,而你只传递了一个参数。`setData()` 函数的第一个参数是 `QVector<double>` 类型的数据,表示要设置的数据,第二个参数是 `bool` 类型的数据,表示是否更新曲线。你需要把两个参数都传递进去,如下所示:
```
ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())), true);
```
这样就可以解决这个报错了。
相关问题
ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())),true);报错ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())),true);
这个报错信息不够详细,无法确定具体的错误原因。不过,根据你提供的代码,我可以给你一些可能的解决方法:
1. 检查 `ui->plot` 是否为空指针。在调用 `ui->plot` 的成员函数之前,需要确保 `ui->plot` 指向了一个有效的对象。
2. 检查 `ui->plot->graph(0)` 是否为空指针。在调用 `ui->plot->graph(0)` 的成员函数之前,需要确保 `ui->plot` 中至少有一个曲线。
3. 检查 `mYDataTol` 是否包含有效的数据。如果 `mYDataTol` 是一个空的向量,那么调用 `setData()` 函数会导致程序崩溃。
4. 检查是否包含必要的头文件。使用 QVector 和 std::vector 需要包含相应的头文件。
如果你仍然无法解决问题,请提供更多的代码和错误信息,以便我能够更好地帮助你解决问题。
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())));
```
这样就可以解决这个报错了。
阅读全文