Hodor | 2021-05-27 21:55:38 UTC | #1
First off, Martin Fitzpatrick, if you here and are reading this, THANK YOU! I've been coding with PyQt for about a year or so before I came across this site last night I was surprised by how much I got for the price of your book.. This is probably going to be my go-to resource for quite some time now.
That being said, I have a question about the use of QMdiArea. I couldn't find anything on it in the books or anything on your site about it. What I am trying to figure out is how to have a QMdiSubWindow be closeable but not delete itself when using a ui created in QtDesigner...
I am instantiating and subclassing the UI by doing:
class GUI(QMainWindow, MyUiDesignerCreatedObject):
def __init__(self):
super()__init__()
self.setupUi(self)
I created the QMdiArea in QtDesigner and had found that in the generated code of the compiled ui file, the QMdiSubWindows I made are being instantiated as QWidget but the Qt Documentation says that anything but QMdiSubWindows will get deleted on close which explains why I am not able to re-open any of my subwindows whenever I(or my users) close them...
Is there a workaround for this or is there something I am using improperly with PyQt or should I be creating my subwindows seperately as a seperate file instead of adding them as subwindows in QtDesigner which doesn't seem to get added as a subwindow in the generated code of the compiled ui file?
The subwindows will reopen fine if I call my_subwindow.show() but self.my_mdi_area.subWindowList() returns an empty list until I run sel.my_mdi_area.addSubWindow(self.my_subwindow) but doing so will cause the subwindow to get deleted because of the whole being instantiated as QWidget and not QMdiSubWindow thing...
Create GUI Applications with Python & Qt5 by Martin Fitzpatrick — (PyQt5 Edition) The hands-on guide to making apps with Python — Over 10,000 copies sold!
Also, adding the subwindow seems to also trigger a .show() signal for it when all I am trying to do is attatch all my subwindows.
The expected behavior is for the QMdiArea of my UI to have all its pre-designed subwindows attatched but defaulted as hidden and only show when triggered by an action...