【发布时间】:2017-12-22 13:47:12
【问题描述】:
我是 C++ 编程的新手,所以我可能只是遗漏了一些东西,但我已经尝试了将近一个小时。
我的UI 中有一组QLabels,我想大约每秒更新两次。它所更新的数据存储在大小为 12 的 QVector<int> 中。
MainWindow::MainWindow(QWidget *parent) :
[...]
knobCoords(new QVector<int>(12)),
updateTimer(new QTimer(this))
{
connect(updateTimer, SIGNAL(timeout()), this, SLOT(updateCoordLabels()));
updateTimer->start(500);
}
为了更新标签,我需要将我的 int 值转换为字符串。这是直接在updateCoordLabels() 函数中完成的:
void MainWindow::updateCoordLabels() {
tracker->updateCoordData(*knobCoords);
ui->knobA_xCoordsLabel->setText(to_string(knobCoords[0]));
ui->knobA_yCoordsLabel->setText(to_string(knobCoords[1]));
ui->knobA_zCoordsLabel->setText(to_string(knobCoords[2]));
ui->knobB_xCoordsLabel->setText(to_string(knobCoords[3]));
[...]
updateTimer->start(500);
}
但是,当我编译程序时,我得到了类型不匹配。出于某种原因,knobCoords[index] 没有按预期返回 int,而是返回 QVector<int>。
mainwindow.cpp:124: error: C2665: 'std::to_string': none of the 9 overloads could convert all the argument types
[...]
mainwindow.cpp:124: while trying to match the argument list '(QVector<int>)'
我做错了什么?
【问题讨论】:
-
这些
new吓到我了 -
knobCoords(new QVector<int>(12))建议knobCoords是QVector*(指针,而不是“普通”QVector) -
看来
knobCoords是一个指针。您需要先取消引用它。 -
我认为您的错误与
int无关,而是std::string。std::to_string错误意味着您必须使用QString而不是std::string来存储ui->knobA_xCoordsLabel的文本和其余部分。尝试使用QString::number -
谢谢各位,我现在解决了。我切换了它,所以 kubCoords 不再是指针并使用 QString::number() 而不是 to_string (因为 QLabel 无论如何都需要 QString)。