qt c++ qpainter 与 QVector
qt c++ qpainter with QVector
所以我有一个 QVector
叫做 xarray
QVector< QString > xarray;
现在我要绘制数组
void MainWindow::paintEvent( QPaintEvent* e )
{
QPainter painter(this);
for(int i = 0; i < 5; i++)
{
qDebug() << "\r\narr : " <<QList<QString>::fromVector(xarray);
painter.drawEllipse(X, 10, 100, 100);
}
}
如何将数组提供给我的 x comp?
我试过了
painter.drawEllipse(xarray[i], 10, 100, 100);
但是没有调用QPainter
的函数。
一个简单的实现可能是这样的:
void MainWindow::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
for(int i = 0; i < 5; i++)
{
painter.drawEllipse(xarray[i].toFloat(), 10.0, 100.0, 100.0);
}
}
您需要先将 QString
值转换为 float
值,然后再将其用作 drawEllipse
的参数
但在实际代码中,我强烈建议确保 xarray
中的值在使用前可以转换为 float
。
我想你正在寻找 QString::toInt()。
您有一个 QString 数组,但您需要将一个 int 传递给 drawEllipse(),即接受 int 的重载。您需要将字符串转换为整数。
快速编辑您的代码会将其变成:
void MainWindow::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
for(int i = 0; i < 5; i++)
{
qDebug() << "\r\narr : " <<QList<QString>::fromVector(xarray);
painter.drawEllipse(xarray[i].toInt(), 10, 100, 100);
}
}
我实际上并没有编译它,希望它能起作用并且你明白了。
所以我有一个 QVector
叫做 xarray
QVector< QString > xarray;
现在我要绘制数组
void MainWindow::paintEvent( QPaintEvent* e )
{
QPainter painter(this);
for(int i = 0; i < 5; i++)
{
qDebug() << "\r\narr : " <<QList<QString>::fromVector(xarray);
painter.drawEllipse(X, 10, 100, 100);
}
}
如何将数组提供给我的 x comp?
我试过了
painter.drawEllipse(xarray[i], 10, 100, 100);
但是没有调用QPainter
的函数。
一个简单的实现可能是这样的:
void MainWindow::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
for(int i = 0; i < 5; i++)
{
painter.drawEllipse(xarray[i].toFloat(), 10.0, 100.0, 100.0);
}
}
您需要先将 QString
值转换为 float
值,然后再将其用作 drawEllipse
但在实际代码中,我强烈建议确保 xarray
中的值在使用前可以转换为 float
。
我想你正在寻找 QString::toInt()。
您有一个 QString 数组,但您需要将一个 int 传递给 drawEllipse(),即接受 int 的重载。您需要将字符串转换为整数。
快速编辑您的代码会将其变成:
void MainWindow::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
for(int i = 0; i < 5; i++)
{
qDebug() << "\r\narr : " <<QList<QString>::fromVector(xarray);
painter.drawEllipse(xarray[i].toInt(), 10, 100, 100);
}
}
我实际上并没有编译它,希望它能起作用并且你明白了。