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
就是空的。當我用QWidget
的構造函數替換setCentralWidget
中的widget
時,它會正確顯示。但不是採用小部件。
我在這裏錯過了什麼?
更新:顯然小部件被刪除。當訪問它的標籤之一的setText
功能時,會出現以下錯誤:
RuntimeError: wrapped C/C++ object of type QLabel has been deleted