1

私はQtにかなり慣れていません。イントロスペクションと Glade UI デザイナーを使用して、Gtk3 でいくつかのものを作成しました。

今、私は PyQt を学ぼうとしています。Ui をクラスにする方法は気に入っていますが (私には管理が簡単に思えます)、何かが私を困惑させます。(実行可能ファイルの作成) フラグを付けて実行するpyuic4と、-x次のコードが含まれます。

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_multippp(object):
    def setupUi(self, multippp):
        multippp.setObjectName(_fromUtf8("multippp"))
        multippp.resize(371, 43)
        self.verticalLayout = QtGui.QVBoxLayout(multippp)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.label = QtGui.QLabel(multippp)
        self.label.setObjectName(_fromUtf8("label"))
        self.verticalLayout.addWidget(self.label)
        self.verticalLayout_2 = QtGui.QVBoxLayout()
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.verticalLayout.addLayout(self.verticalLayout_2)

        self.retranslateUi(multippp)
        QtCore.QMetaObject.connectSlotsByName(multippp)

    def retranslateUi(self, multippp):
        multippp.setWindowTitle(QtGui.QApplication.translate("multippp", "Multiple PPP Accounts", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("multippp", "More than one PPP account found, please select one:", None, QtGui.QApplication.UnicodeUTF8))


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    multippp = QtGui.QDialog()
    ui = Ui_multippp()
    ui.setupUi(multippp)
    multippp.show()
    sys.exit(app.exec_())

この (生成された) コードで理解しようとしているのは、multippp ダイアログが他のすべてのウィジェットを含むクラスの一部ではない理由です。代わりに、私が知る限り、QDialog を渡すと、希望どおりに彫刻されます。QDialog を分離する利点はありますか? もしそうなら、その利点は何ですか?

4

1 に答える 1

0

サブ ウィジェットには、QMainWindow や QDialog などのウィジェット コンテナーが必要です。ただし、ウィジェットをトップ レベル ウィジェットとして使用することもできます。QDialog が存在するのは、pyuic4 がこの設計されたウィジェットの使用方法を知らないためです。

あなたのプログラムでは、QDialog は他のウィジェット コンテナにすることができます。multippp をサブクラス化することもできます。

最後に、QDialog はコードを実行する単なる親です。

于 2013-05-14T12:21:55.910 に答える