gpt4 book ai didi

c++ - 为 QRectF 设置 topLeft 和 bottomRight

转载 作者:行者123 更新时间:2023-11-28 08:01:26 24 4
gpt4 key购买 nike

我的问题是,当我为 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 这样的值。我不希望它变成那样。

那么这种值(value)变化的原因是什么?我不明白为什么要将它设置为那样的值。

最佳答案

topLeft 未初始化。

如果您的条件得到满足,您只需为 topLeft(或 bottomRight)赋值。因此,请务必将矩形初始化为合理的值,以便在 if 语句中进行有意义的比较。

此外,topLeft 并没有像您假设的那样改变。在 while 循环中,打印 map 的元素(tlbr),not(未初始化的)topLeft 在 while 循环之后打印。这就是您得到不同结果的原因。

关于c++ - 为 QRectF 设置 topLeft 和 bottomRight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11357816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com