2011-09-18 12 views
5

Mam marines projektu i mam następującą strukturę plików.Jak wyświetlić widżet wewnątrz głównego okna

marines.pro

FORMY

iran.ui marines.h

Główki

iran.h marines.h

Źródła

iran. cpp main.cpp marines.cpp

Dodałem widget iran w projekcie marines.

Oto 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; 
} 

i tu jest moje iran.cpp

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

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

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

Jak mogę wyświetlić widget iran i wykonane w Qt Designer ?.

Odpowiedz

12

Wszystko zależy od tego, jak chcesz wyświetlać widżet.

  1. można dodać układ do centralnego widget w MainWindow i dodać swój własny widżet do układu
  2. jeśli chcesz zwyczaj widget być centralWidget z MainWindow następnie użyć setCentralWidget
  3. Jeśli chcesz niestandardowy widget jako subWindow, a następnie dodaj MdiArea do MainWindow. Następnie dodaj niestandardowy widget do MdiArea.
  4. Jeśli chcesz po prostu zwyczaj widget ma być wyświetlany jako okno potem po prostu „widget.show()”

jej lepiej przyjrzeć Qt's examples to understand how a MainWindow is used.

+0

Dzięki za opcji. Czy mógłbyś wyjaśnić nieco więcej opcji 4. – Gandalf

+0

cóż, w konstruktorze marines wywołaj iran-> show() jak zasugerował andrei lub w konstruktorze irana możesz po prostu wywołać show() lub gdy utworzysz iran object call show() na nim – blueskin

+0

jeśli mogę dodać, uważam, że opcja 4 wymagałaby * parent = 0 w konstruktorze (co oznacza, że ​​nie jest dzieckiem żadnego innego widgetu i zostanie utworzony jako okno) – 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

Skończyło się na używaniu QStackedWidget. – Gandalf

+0

To pokazuje go jako oddzielne okno lub rozwiązanie (4) z odpowiedzi blueskina. – TimZaman

Powiązane problemy