Jest coś, czego nie rozumiem o Qt Designer
. Pracuję z nim od jakiegoś czasu i nadal zawsze ręcznie edytuję pliki .ui.Qt Designer nie może promować QMainWindow
Jak można zauważyć w każdy samouczek na Qt, jeden z pierwszą rzeczą zrobić podczas tworzenia GUI jest do podklasy QMainWindow
- aby złapać i przedefiniować funkcję closeEvent()
, na przykład.
Nie można jednak podklasy ("promować") QMainWindow
w Qt Designer - można to zrobić z wieloma innymi klasami, ale nie z tą.
Co zwykle zrobić to edytować plik .ui i zmienić:
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
według:
< widget class="MyMainWindow" name="MainWindow">
więc, że mój kod może podklasy QMainWindow
właściwie w moim kodu:
class MyMainWindow(QMainWindow, object):
''' I can redefine closeEvent here! '''
Oczywiście, jest to dziwne - i prawdopodobnie brakuje mi czegoś o tym, jak to zrobić z Projektantem. Ale nie mogę znaleźć żadnego wyjaśnienia.
Dlaczego nie jest możliwe podklasy QMainWindow
w Projektancie, lub jak inaczej ustrukturyzować aplikację, aby uniknąć potrzeby?
Dzięki
Dzięki za wskazanie tej odpowiedzi. Ale to pokazuje, że ktoś miał ten sam problem i stworzył hack do obejścia go. Teraz nie jest dla mnie jasne, czy jest to bug Pyside. Podczas używania Qt/C++ lub PyQt wywoływanie load() z poziomu instancji klasy najwyższego poziomu Ui bezpośrednio mapuje załadowany widżet do bieżącego wystąpienia? Z pewnością nie jest to wyjaśnione w dokumentacji QUiLoader. Wciąż zdziwiony. –