Получение размера QGraphicsView - PullRequest
3 голосов
/ 24 февраля 2011

Я хочу знать размер определенного QGraphicsView. Его размер не фиксирован, потому что виджет является частью макета сетки. Я попытался использовать this->ui->myGraphicsView->width() и его эквивалент высоты, но эти значения не точны.

Как я могу получить текущий размер QGraphicsView?

Ответы [ 4 ]

3 голосов
/ 07 апреля 2011

Постоянно получал 100x30 как размер моего QGraphicsView. Оказалось, что я спрашивал размер QGraphicsView, прежде чем он был показан.

После перемещения моего кода инициализации в showEvent я получил правильные размеры.

3 голосов
/ 25 февраля 2011

Если вы хотите знать фактический размер QGraphicsView, QGraphicsView :: size ();Если вы хотите знать только размер содержимого QGraphicsView, QGraphisView :: viewport (). Size ();

2 голосов
/ 16 февраля 2015

получить ширину / высоту в конструкторе MainWindow

В этом проблема!Виджет еще не нарисован, и вы спрашиваете его размер.Используйте другие события, такие как event, showEvent, paintEvent, чтобы получить правильный размер в процессе инициализации виджета.

0 голосов
/ 13 января 2017

Ответ: После вызова MainWindow :: show (), затем получите размер.

Описание: У меня была та же проблема, что и у Питера. В конструкторе виджета, таком как MainWindow :: MainWindow (), вы не можете получить правильный размер виджета, такого как QGraphicsView в Grid Layout, потому что в этом конструкторе размер и расположение виджета не определены. Поэтому в MainWindow :: MainWindow () вы должны вызвать show (), а затем получить размер представления или другого виджета.

...