2010-09-13 155 views
8

嗨如何添加小部件內部小部件如何在QT中的另一個小部件內部部件?

我創建了主小部件,併爲主小部件headerbar來自另一個小部件。 這裏下面的代碼

的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 

而編譯此代碼沒有錯誤。但是,當我試圖運行它通過錯誤「退出,代碼爲-1073741819」

請幫我解決這個問題

回答

6

當你使用layout,你從來沒有創建和分配一個實例吧:

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

您在使用前應首先創建它:

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

肯定。它的工作。謝謝 – saravanan 2010-09-13 12:14:42

相關問題