2010-09-13 11 views
8

hola cómo agregar el widget dentro del widgetCómo Widget dentro de otro widget en QT?

he creado el widget principal, y para la barra de título del widget principal provienen de otro widget. aquí el código de abajo

main.cpp

#include <QApplication> 
#include "mainwindow.h" 

int main(int argl,char *argv[]) 
{ 
    QApplication test(argl,argv); 

    mainWindow *window=new mainWindow(); 
    window->setWindowState(Qt::WindowFullScreen); 
    window->show(); 

    return test.exec(); 
} 

mainwindow.cpp

#include "mainwindow.h" 
#include <QtGui> 
#include "headerbar.h" 
#include <QGridLayout> 

mainWindow::mainWindow(QWidget *parent) : QWidget(parent) 
{ 

    QGridLayout *layout; 
    headerBar *Header=new headerBar(this); 
    layout->addWidget(Header,0,0); 
    this->setLayout(layout); 
} 


mainWindow::~mainWindow() 
{ 

} 

headerbar.cpp

#include "headerbar.h" 

headerBar::headerBar(QWidget *parent) : QWidget(parent) 
{ 
    this->setMaximumHeight(24); 
} 

headerBar::~headerBar() 
{ 

} 

mainwindow.h

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QWidget> 

class mainWindow : public QWidget 
{ 
    Q_OBJECT 
public: 
    mainWindow(QWidget *parent = 0); 
    ~mainWindow(); 

signals: 

public slots: 

}; 

#endif // MAINWINDOW_H 

headerbar.h

#ifndef HEADERBAR_H 
#define HEADERBAR_H 

#include <QWidget> 

class headerBar : public QWidget 
{ 
    Q_OBJECT 
public: 
    headerBar(QWidget *parent = 0); 
    ~headerBar(); 

signals: 

public slots: 

}; 

#endif // HEADERBAR_H 

mientras que compilar el código sin errores. pero cuando estoy tratando de correr es a través de error "salido con código -1073741819"

por favor me ayude a solucionar este problema

Respuesta

6

Mientras utiliza layout, que nunca han creado y asignado una instancia a la misma:

QGridLayout *layout; // no initialization here 
headerBar *Header = new headerBar(this); 
layout->addWidget(Header,0,0); // layout is uninitialized and probably garbage 

debe crearla primero antes de usarlo:

QGridLayout *layout = new QGridLayout(this); 
+0

sí. funcionó Gracias – saravanan

Cuestiones relacionadas