2011-09-18 15 views
5

Tengo un proyecto marines y tengo la siguiente estructura de archivos.Cómo mostrar un widget dentro de una ventana principal

marines.pro

FORMAS

iran.ui marines.h

Headers

iran.h marines.h

Fuentes

Irán. cpp main.cpp marines.cpp

He añadido el widget irán en el proyecto marines.

Aquí es 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; 
} 

y aquí está mi iran.cpp

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

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

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

¿Cómo puedo mostrar el widget irán i hecho en Qt Designer ?.

Respuesta

12

Todo depende de cómo quiera que se visualice el widget.

  1. podría agregar un diseño a su widget central en su MainWindow y añadir su widget personalizado a la disposición
  2. si desea que su widget personalizado para ser centralWidget del MainWindow a continuación, utilizar setCentralWidget
  3. Si desea el widget personalizado como una subventana y luego agrega MdiArea a tu ventana principal. A continuación, agregue un widget personalizado a MdiArea.
  4. Si lo que desea el widget personalizado que se muestra como una ventana a continuación, sólo "widget.show()"

Su mejor mirar a Qt's examples to understand how a MainWindow is used.

+0

Gracias por las opciones. Podrías explicar alguna opción más 4. – Gandalf

+0

bueno, en el constructor de marines llama a iran-> show() como andrei sugerido o en el constructor de Irán puedes simplemente llamar a show() o donde crees iran object call show() en él – blueskin

+0

si puedo agregar, creo que la opción 4 requeriría * parent = 0 en el constructor (lo que significa que no es un elemento secundario de ningún otro widgets y se creará como una ventana) – 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

Terminé usando el QStackedWidget. – Gandalf

+0

Esto lo muestra como una ventana separada, o solución (4) de la respuesta de blueskin. – TimZaman

Cuestiones relacionadas