我的问题是,当我为QPointF设置值时,当我检查它们到底是什么时,我会得到像1.32841e + 09这样的奇怪值。 当我在while循环的第六行打印出来时,我没有得到这些值。
void MainView::showAllGraphs(){
QMapIterator<QString, QRectF> i(graphRectangles);
QPointF topLeft;
QPointF bottomRight;
QRectF maxRect;
while (i.hasNext()) {
i.next();
qreal tlX = i.value().topLeft().x();
qreal tlY = i.value().topLeft().y();
qreal brX = i.value().bottomRight().x();
qreal brY = i.value().bottomRight().y();
QTextStream(stdout) << tlY << " " << brY << endl;
if(tlY < topLeft.y()){
topLeft.setY(tlY);
topLeft.setX(tlX);
}
if(brY > bottomRight.y()){
bottomRight.setY(brY);
bottomRight.setX(brX);
}
}
maxRect.setTopLeft(topLeft);
maxRect.setBottomRight(bottomRight);
QTextStream(stdout) << topLeft.y() << " x " << topLeft.y() << endl;
graphicsScene>setSceneRect(maxRect);
graphicsView->fitInView(maxRect);
matrixUpdated(graphicsView->matrix());
}
对于第一次打印,我得到介于-100和100之间的值(这是有效的)。当我打印出来时,我突然得到一个像2.45841e + 09或有时0的值。我不希望它改变为那个。
那么这种价值变化的原因是什么?我无法弄清楚为什么它被设置为这样的值。
答案 0 :(得分:1)
topLeft
未初始化。
如果符合条件,您只需为topLeft
(或bottomRight
)分配值。因此,请确保将矩形初始化为合理的值,以便在if语句中进行有意义的比较。
此外,您假设topLeft
未更改。在while循环中,您可以打印地图元素(tl
和br
),不(未初始化)topLeft
环。这就是你得到不同结果的原因。