gpt4 book ai didi

c++ - 在 QGraphicsScene 中使用自定义坐标

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:32 29 4
gpt4 key购买 nike

我正在试验所见即所得的编辑器,它允许用户在页面上绘制形状,而 Qt 图形场景支持似乎非常适合这个。但是,我希望我所有的 QGraphicsItem 对象都以十分之一毫米为单位工作,而不是以像素为单位工作,但我不知道如何实现这一点。

例如:

// Create a scene that is the size if an A4 page (2100 = 21cm, 2970 = 29.7cm)
QGraphicsScene* scene = new QGraphicsScene(0, 0, 2100, 2970);
// Add a rectangle located 1cm across, 1cm down, 5cm wide and 2cm high
QGraphicsItem* item = scene->addRect(100, 100, 500, 200);
...
QGraphicsView* view = new QGraphicsView(scene);
setCentralWidget(view);

现在,当我显示上面的场景时,我希望形状以适合屏幕 DPI 的正确大小显示。这仅仅是使用 QGraphicsView::scale 的情况还是我必须做一些更复杂的事情?

请注意,如果我使用的是自定义 QWidget,那么我会使用 QPainter::setWindowQPainter::setViewport 来创建自定义映射模式,但我不能看不到如何使用图形场景支持来做到这一点。

最佳答案

QGraphicsView::scale 应该可以完成这项工作。但我更喜欢设置 transform .它使我能够更好地控制场景的显示方式。但那是因为我需要旋转、翻转等功能。它还允许我跟踪我对场景所做的操作。

关于c++ - 在 QGraphicsScene 中使用自定义坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2984211/

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