PySideを使用してPythonで記述されたQTアプリケーションがあり、QGLWidgetのshowFullScreenメソッドに関する小さな問題に遭遇しました(ただし、他のすべてのウィジェットでも問題が発生します)。
問題は、プログラムがshowFullScreenから戻った後、ウィジェットの「最終的な」解像度がないことです。スイッチは、5〜10ミリ秒後に非同期でトリガーされるようです。
ウィジェットが表示された後、ウィジェットのサイズに応じてレイアウト計算を行う必要があるため、これは私にとって問題です。
以下は、QGLWidgetをサブクラス化する小さな再現機能です。この再現機能を使用すると、showFullScreenの後にresizeEventが2回呼び出されることに注意してください。
ウィジェットが実際にフルスクリーンモードになっているときに、どのresizeEventが「最終的な」ものであるかを知るための便利な方法、または知る方法を探しています。接続できる信号はありますか?
これについて助けてくれてありがとう。
#!/usr/bin/python
import sys
from PySide.QtGui import QApplication
from PySide.QtCore import QTimer
from PySide.QtOpenGL import QGLWidget
class TestWidget(QGLWidget):
def __init__(self, parent=None):
super(TestWidget, self).__init__(parent)
self._timer = QTimer()
self._timer.setInterval(5)
self._timer.timeout.connect(self.showsize)
self._timer.start()
def resizeEvent(self, event):
print "Resize event:", event.size().width(), event.size().height()
def showsize(self):
w = widget.size().width()
print "Timer: ", w, widget.size().height()
if w == 1680:
self._timer.stop()
if __name__ == "__main__":
app = QApplication(sys.argv)
widget = TestWidget()
widget.showFullScreen()
print "After showFullScreen:", widget.size().width(), widget.size().height()
# this will always be 640 480...1680 1050 is what I'm expecting
app.exec_()