2011-09-18 103 views
5

内部部件我有一个项目,海军陆战队员和我有以下的文件结构。如何显示主窗口

marines.pro

表格

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 Designer中所做的窗口小部件?

回答

12

这一切都取决于你如何要显示的控件。

  1. ,你可以在你的主窗口布局添加到您的核心部件,如果您希望自定义窗口小部件是主窗口的centralWidget然后用setCentralWidget
  2. 如果您希望自定义窗口小部件添加到布局
  3. 将自定义小部件作为子窗口,然后将MdiArea添加到您的MainWindow中。然后将自定义小部件添加到您的MdiArea。
  4. 如果你只是想显示自定义窗口小部件的窗口,然后只是“widget.show()”

其更好看Qt's examples to understand how a MainWindow is used.

+0

感谢您的选项。你能解释一些选项4 – Gandalf

+0

很好,在海军陆战队的构造函数中调用iran->显示()作为安德烈建议或伊朗的构造函数,你可以只调用show()或等。无论您就可以 – blueskin

+0

创建伊朗对象调用显示()如果我可以补充,我相信选择4将需要*在构造父= 0(这意味着它是没有任何其他部件的一个孩子,将作为窗口创建)我结束了使用QStackedWidget – 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

。 – Gandalf

+0

这显示它是一个单独的窗口,或从blueskin的答案中解决方案(4)。 – TimZaman