2011-09-18 12 views
5

Ho un progetto marines e ho la seguente struttura di file.Come visualizzare un widget all'interno di una finestra principale

marines.pro

FORME

iran.ui marines.h

intestazioni

iran.h marines.h

Fonti

Iran. cpp main.cpp marines.cpp

Ho aggiunto il widget iran nel progetto marines.

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

e qui è la mia iran.cpp

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

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

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

Come posso visualizzare il widget iran ho fatto in designer qt ?.

risposta

12

Tutto dipende da come si desidera visualizzare il widget.

  1. si potrebbe aggiungere un layout per il tuo widget centrale nella vostra MainWindow e aggiungere il widget personalizzato al layout
  2. se si desidera che il widget personalizzato per essere centralWidget del MainWindow quindi utilizzare setCentralWidget
  3. Se si desidera il widget personalizzato come subWindow quindi aggiungi MdiArea alla tua MainWindow. Quindi aggiungi il widget personalizzato a MdiArea.
  4. Se si desidera solo il widget personalizzato da visualizzare come una finestra poi basta "widget.show()"

suo meglio guardare Qt's examples to understand how a MainWindow is used.

+0

Grazie per le opzioni. Potresti spiegare qualche altra opzione 4. – Gandalf

+0

beh, nel costruttore di marines chiama iran-> show() come suggerito andrei o in iran constructor puoi semplicemente chiamare show() o ovunque crei l'oggetto iran call show() su di esso – blueskin

+0

se posso aggiungere, credo che l'opzione 4 richiederebbe * parent = 0 nel costruttore (il che significa che non è figlio di nessun altro widget e verrà creato come finestra) – 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

Ho finito per usare QStackedWidget. – Gandalf

+0

Questo lo mostra come una finestra separata, o una soluzione (4) dalla risposta di Blueskin. – TimZaman

Problemi correlati