Я экспериментирую с редактором WYSIWYG, который позволяет пользователю рисовать фигуры на странице, а поддержка графической сцены Qt идеально подходит для этого. Однако вместо работы в пикселях я хочу, чтобы все мои объекты QGraphicsItem
работали в десятых долях миллиметра, но я не знаю, как это сделать.Использование пользовательских координат с QGraphicsScene
Например:
// 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::setWindow
и QPainter::setViewport
, чтобы создать настраиваемый режим сопоставления, но я не вижу, как это сделать, используя поддержку графических сцен.