4

私は Qt (および C++ の程度は低い) を使い始めており、続行する前に基本コードを完全に理解していることを確認したかったのです。初期化リストの最初の要素が、デフォルト以外の継承されたコンストラクターを選択するために使用されていることを理解しています。

しかし、 ui(new Ui::TestAppMain) の目的は何ですか? コンストラクターで ui が TestAppMain の新しいインスタンスに設定されているため、無限ループになるように思えますが、そうではありません。

namespace Ui {
    class TestAppMain;
}

class TestAppMain : public QMainWindow{
    public:
        explicit TestAppMain(QWidget *parent = 0);

    private:
        Ui::TestAppMain *ui;
};

TestAppMain::TestAppMain(QWidget *parent): QMainWindow(parent), ui(new Ui::TestAppMain){
    ui->setupUi(this);
}
4

1 に答える 1

10

Ui::TestAppMainTestAppMainあなたのクラスと同じではありません。これは、Qt Creator で作成した .ui ファイルから Qt によって生成される別の C++ クラスです。混乱や名前の競合を避けるために、Qt はそのような生成されたすべてのクラスをUi名前空間に配置します。

Ui::MyWidget独自の class にのインスタンスを含めることは、Qt の標準的な方法MyWidgetです。あなたの場合、インスタンス化した後、そのオブジェクトを使用して、TestAppMain.ui で指定したレイアウトに従ってUi::TestAppMainメイン ウィンドウ (クラスで表される) を初期化します。TestAppMainこれは、 を呼び出すことによって行われui->setupUi(this)ます。

于 2011-09-18T22:56:20.533 に答える