【问题标题】:QRect on a QGraphicsSceneQGraphicsScene 上的 QRect
【发布时间】:2012-03-12 08:46:53
【问题描述】:

这似乎微不足道,但我没有找到解决方案。我要做的就是设置一个坐标系 QGraphicsScene [-10, -10] 到 [10, 10] (fe 与 setSceneRect(-10, -10, 20, 20))并在场景,使用场景的坐标系。

scene = new QGraphicsScene(-10.0, -10.0, 20.0, 20.0, ui->graphicsView);
// scene is already a QGraphicsScene pointer defined in the .h
ui->graphicsView->setScene(scene);
scene->addRect(-8, -8, 4, 4);

我在示例中所期望的是左下边框的矩形边界。我也尝试了 mapToScene() 和 fitInView(),但这也没有给我带来预期的结果。

感谢您的帮助。

【问题讨论】:

    标签: qt qgraphicsview qrect


    【解决方案1】:

    我认为您正在寻找QGraphicsView::setSceneRect(),它告诉视图要显示场景的哪个部分。

    【讨论】:

    • 你好,史蒂芬。我还尝试了 QGraphicsView 的 setSceneRect()。但正如文档所述:“如果未设置,或者如果设置了空 QRectF,则此属性与 QGraphicsScene::sceneRect 具有相同的值,并且它会随 QGraphicsScene::sceneRect 而变化。”如果我显示 sceneRect() 的当前值(使用 qDebug() sceneRect(); )我会得到相同且正确的值,QGraphicsView 和 QGraphicsScene。
    • 嗯,这很有趣,我刚刚尝试了您的示例,到目前为止,唯一对我有用的组合是:fitInView() 在构造后的某个时候(例如按钮处理程序)+ setViewportUpdateMode(QGraphicsView::全视口更新)。 FWIW 在 (-10,-10,20,20) 处添加一个 Rectangle 似乎也有帮助。
    • 抱歉,您能否提供一个代码 sn-p,因为我无法使其正常工作。编辑:我记得当我使用 fitInView() 时,它只是该特定区域的缩放视图,但没有设置场景的尺寸。结果,矩形的线条 > 1 px(因为缩放)并且生成了滚动条(我不需要)。
    • 我建立了一个项目(Qt Gui Application),在 UI 中添加了一个 QGraphicsView 和一个 QButton,将你的代码放在 MainWindow 的构造函数中,并为按钮添加了一个点击处理程序:void MainWindow:: on_pushButton_clicked() { ui->graphicsView->fitInView(-10.0,-10.0,20.0,20.0); } 然后按下按钮后,视图看起来和我预期的一样。
    • 抱歉,我不知道为什么会有这样的行为。这可能是一个错误,或者只是与事件循环必须在视图设置真正发生之前运行这一事实有关?!
    猜你喜欢
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2011-12-17
    相关资源
    最近更新 更多