Qt Designer
についてわからないことがあります。私はしばらくそれを使用してきましたが、私はいつも手動で.uiファイルを編集していました。例えば、closeEvent()
機能をキャッチし、再定義するために - それはにQtの上のすべての単一チュートリアル、あなたはGUIを作成するときにあなたが非常に最初のものの一つがQMainWindow
をサブクラス化することであると見ることができるようにQt DesignerはQMainWindowを宣伝できません
。
しかし、QMainWindow
をQtデザイナーでサブクラス化(プロモート)することはできません。他の多くのクラスではできますが、これはできません。
私は通常行うことは.uiファイルと変更編集している:私のコードは私のコードで正しくQMainWindow
をサブクラスできるようにするため
< widget class="MyMainWindow" name="MainWindow">
:によって
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
を
class MyMainWindow(QMainWindow, object):
''' I can redefine closeEvent here! '''
明らかに、これは不思議です。デザイナーとの正しいやり方については何か不明です。しかし、私は説明を見つけることができません。
QMainWindow
をDesignerでサブクラス化することができないのはなぜですか、またはそれを必要としないようにアプリケーションの構造を変更するのはなぜですか?
おかげ
ありがとうございました。しかし、これは、誰かが同じ問題を抱えていて、それを回避するためにハックを作成したことを示しています。これがピサイドのバグかどうかは今私には分かりません。 Qt/C++またはPyQtを使用する場合、Uiファイルのトップレベルクラスのインスタンス内からload()を呼び出すと、ロードされたウィジェットが現在のインスタンスに直接マップされますか?これは、QUiLoaderのドキュメントではこのようにはっきりと説明されていません。まだ困惑している。 –