2010-09-13 10 views
8

Hallo, wie Widget in WidgetWie Widget in einem anderen Widget in QT?

ich erstellt Haupt Widget, und für das Haupt Widget Headerbar kommen aus einem anderen Widget. hier den Code unten

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 

, während dieser Code keine Fehler kompilieren. aber wenn ich versuche, es durch Fehler zu laufen „verlassen mit Code -1073741819“

mir bitte helfen dieses Problem zu beheben

Antwort

6

Während Sie layout verwenden, haben Sie noch nie eine Instanz es erstellt und zugewiesen:

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

Sie sollten es schaffen, bevor es mit:

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

ja. es hat funktioniert. Vielen Dank – saravanan