2011-09-18 8 views
5

私はプロジェクト海兵隊員を抱えています。私は以下のファイル構造を持っています。メインウィンドウ内にウィジェットを表示する方法

marines.pro

FORMS

iran.ui marines.h

ヘッダ

iran.h marines.h

ソース

イラン。 cpp main.cpp marines.cpp

私はプロジェクトマリーンでウィジェットiranを追加しました。ここで

はmarines.cpp

#include <QtGui> 
#include "marines.h" 
#include "iran.h" 


marines::marines(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::marines) 
{ 
    ui->setupUi(this); 
    connect(ui->actionExit, SIGNAL(triggered()), this, SLOT(close())); 
    connect(ui->actionIran, SIGNAL(triggered()), this, SLOT(ir())); 
} 

void marines::ir() 
{ 
//slot to display iran ui inside my main window 
} 

marines::~marines() 
{ 
    delete ui; 
} 

であり、ここで私のiran.cpp

#include "iran.h" 
#include <QtGui> 

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

iran::~iran() 
{ 
    delete ui; 
} 

は、私はイランが、私はQTデザイナで作られたウィジェットを表示するにはどうすればよいです?。

答えて

12

すべては、ウィジェットの表示方法によって異なります。あなたがあなたのカスタムウィジェットは、メインウィンドウのcentralWidgetになりたい場合は、あなたがしたい場合は、setCentralWidget

  • を使用し、あなたのメインウィンドウで、あなたの中心ウィジェットにレイアウトを追加し、レイアウト
  • にカスタムウィジェットを追加することができ

    1. カスタムウィジェットをサブウィンドウとして追加し、MainWindowにMdiAreaを追加します。次に、MdiAreaにカスタムウィジェットを追加します。
    2. あなただけのカスタムウィジェットはちょうどそのウィンドウとして表示させたい場合は、「widget.show()」

    その優れたオプションのためのQt's examples to understand how a MainWindow is used.

  • +0

    感謝を見て。あなたはもっと多くのオプションを説明できますか? – Gandalf

    +0

    海兵のコンストラクタでは、iran-> show()をandreiとして呼び出すか、イランコンストラクタでshow()を呼び出すか、iranオブジェクトコールshow()を作成することができます。 – blueskin

    +0

    もし私が追加することができれば、オプション4はコンストラクタで* parent = 0を必要とすると考えています(これは他のウィジェットの子ではなく、ウィンドウとして作成されます) – Rachael

    2
    marines::marines(QWidget *parent) : 
        QMainWindow(parent), 
        ui(new Ui::marines) 
    { 
        ui->setupUi(this); // after this 
        iran *ir = new iran(); // create variable ir 
        ir->show(); // show window 
        ... 
    } 
    
    +0

    QStackedWidgetを使用してしまいました。 – Gandalf

    +0

    これは別ウィンドウとして、またはブルースキンの答えからの解決策(4)を示しています。 – TimZaman

    関連する問題