QGraphicsView делает масштаб сцены до полной ширины - PullRequest
3 голосов
/ 24 сентября 2011

Я вложил в подкласс QGraphicsView и показал виджет в моем макете. В представлении у меня, естественно, есть QGraphicsScene.

Я могу получить размер QGraphicsScene совершенно отлично (а именно 2100x2970, как я установил), однако геометрия виджета QGraphicsView неверна. Всякий раз, когда я изменяю размер главного окна, меняется и виджет, и виджет. Конечно, размер QGraphicsScene не имеет значения и остается таким, какой он есть. Но виджет, показывающий полосы прокрутки и сцену через область просмотра, просто не дает мне правильную ширину и высоту виджета.

В QtDesigner виджет QGraphicsView показывает, что геометрия QWidget равна 1126x643. Но я никогда не могу получить эти значения в подклассе класса QGraphicsView.

Когда я знаю ширину (1126 или что-то еще при изменении размера главного окна), я могу вычислить масштабный коэффициент для вида (масштабный коэффициент = 1126/2100), чтобы сцена покрыла всю ширину виджета вида.

В QGraphicsView:

qDebug("scene: %f %f", scene()->width(), scene()->height()); // works (2100x2970)
qDebug("geo: %f %f", geometry().width(), geometry().height()); // does not (0x2970)

Ответы [ 2 ]

6 голосов
/ 24 сентября 2011

Вы смотрели на QGraphicsView :: fitInView () ?Этот метод автоматически выполнит необходимые вычисления масштаба.

0 голосов
/ 24 сентября 2011

Очевидно, что при использовании неправильного формата в qDebug вывод непредсказуем.При использовании:

qDebug("geo: %i %i", geometry().width(), geometry().height());

действительно отображается правильный размер.

...