0
QWidget
をそれ自身のQMainWindow
にポップするというアイディアです。それはあらかじめウィンドウAの中心ウィジェットであり、その後Aにはフィラーウィジェットが必要です。新しいウィンドウBは、ウィジェットを独自の中央ウィジェットとして生成します。QWidgetをあるウィンドウから別のウィンドウに移動する(PyQt内)
ので、ここでの設定です:
class DetachedWindow(QtWidgets.QMainWindow):
def __init__(self, window: "MyMainWindow", widget: QtWidgets.QWidget = None, *args):
QtWidgets.QMainWindow.__init__(self, *args)
self.main_window = window
window.set_widget(EmptyWidget(), False) # sets new filler central widget
if widget is not None:
self.setCentralWidget(widget)
widget.setParent(self)
self.show()
class MyMainWindow(QtWidgets.QMainWindow):
# ...
def detach_screen(self):
self.windows.append(DetachedWindow(self, self.current_widget))
しかし、私はそれをしようとすると、DetachedWindow
は単に空です。 setCentralWidget
のwidget
をQWidget
のコンストラクタに置き換えると、正しく表示されます。しかし、採用されたウィジェットではない。
私はここで何が欠けていますか?
更新:明らかにウィジェットは削除されています。そのラベルの1つのsetText
機能にアクセスすると、次のエラーが発生します。
RuntimeError: wrapped C/C++ object of type QLabel has been deleted