I want to know the size of a certain QGraphicsView
. Its size isn\'t fixed because the widget is part of a grid layout. I tried using this->ui->myGra
I have the same problem with you. QGraphicsView.size()
is always return (100,30)
. I have solved this problem in my project.
Check below code is like this
...in a QTabWidget class...
def addANewTab(self):
view = QGraphicsView()
...set view param...
index = self.addTab(view, 'test')
view.size() # it will return (100,30)
self.setCurrentIndex(index)
view.size() # it will return correct size
so like Bigbell Mercy answered , you show make sure QGraphicsView
is show!
retrieve the width/height in MainWindow's constructor
That is the problem! The widget isn't painted already and you're asking for it's size. Use other events like event
, showEvent
, paintEvent
to get the right size within the initialization process of a widget.
If you wanna know the actual size of QGraphicsView, QGraphicsView::size(); If you wanna konw only the content size of QGraphicsView, QGraphisView::viewport().size();
Answer: After calling MainWindow::show(), then get the size.
Description: I had the same problem as Pieter. In the widget constructor like MainWindow::MainWindow() you can't get the correct size of the widget like QGraphicsView in Grid Layout because in that constructor the widget's size and location are not determined. Therefore, in MainWindow::MainWindow() you have to call show() and then get the size of the view or other widget.
Constantly received 100x30 as the size of my QGraphicsView as well. It turned out I was asking for the size of the QGraphicsView before it was shown.
After moving my initialization code to showEvent, I got the correct dimensions.