あるサイズを知りたいQGraphicsView
。ウィジェットはグリッドレイアウトの一部であるため、そのサイズは固定されていません。と同等の高さを使用this->ui->myGraphicsView->width()
してみましたが、これらの値は正確ではありません。
の現在のサイズを取得するにはどうすればよいQGraphicsView
ですか?
あるサイズを知りたいQGraphicsView
。ウィジェットはグリッドレイアウトの一部であるため、そのサイズは固定されていません。と同等の高さを使用this->ui->myGraphicsView->width()
してみましたが、これらの値は正確ではありません。
の現在のサイズを取得するにはどうすればよいQGraphicsView
ですか?
QGraphicsViewの実際のサイズを知りたい場合は、QGraphicsView :: size(); QGraphicsViewのコンテンツサイズのみを知りたい場合は、QGraphisView :: viewport()。size();
QGraphicsViewのサイズとしても常に100x30を受け取りました。表示される前に、QGraphicsViewのサイズを尋ねていたことがわかりました。
初期化コードをshowEventに移動した後、正しいサイズを取得しました。
MainWindowのコンストラクターで幅/高さを取得します
それは問題!ウィジェットはまだペイントされておらず、サイズを要求しています。event
、、などの他のイベントを使用してshowEvent
、paintEvent
ウィジェットの初期化プロセス内で適切なサイズを取得します。
回答:MainWindow :: show()を呼び出した後、サイズを取得します。
説明:Pieterと同じ問題がありました。MainWindow :: MainWindow()のようなウィジェットコンストラクターでは、グリッドレイアウトのQGraphicsViewのようなウィジェットの正しいサイズを取得できません。そのコンストラクターでは、ウィジェットのサイズと場所が決定されていないためです。したがって、MainWindow :: MainWindow()では、show()を呼び出してから、ビューまたは他のウィジェットのサイズを取得する必要があります。
私はあなたと同じ問題を抱えています。QGraphicsView.size()
常にreturn (100,30)
です。私は自分のプロジェクトでこの問題を解決しました。
以下のコードを確認してくださいこのようなものです
...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
ビッグベルマーシーが答えたように、あなたはショーであることを確認してくださいQGraphicsView
!