2011-02-08 307 views
1

我創建示例應用程序,我從UI形式使用了前兩個Qwidget,第三個小部件是自定義的。我創建了一個cpp文件和頭文件。沒有問題時,構建的同時運行應用程序的前兩個部件都很好,當我點擊導航第三個,它說的錯誤(LOGIN.EXE文件已停止工作) 我的頭文件是:在Qt中創建自定義Qwidget?

#ifndef LISTWIDGET_H 
#define LISTWIDGET_H 

#include <QObject> 
#include <QWidget> 
#include <QtGui> 
#include <QPushButton> 

class listWidget : public QWidget 
{ 
    Q_OBJECT 

public: 
    explicit listWidget(QWidget *parent=0); 
    ~listWidget(); 
public: 
    QPushButton *button; 
signals: 

}; 

#endif // LISTWIDGET_H 

和我的CPP文件是:

#include "listwidget.h" 
#include <QHBoxLayout> 
#include <QObject> 
#include <QWidget> 
#include <QtGui> 

listWidget::listWidget(QWidget *parent):QWidget(parent) 
{ 
    resize(100,100); 
    button = new QPushButton("Click here to go back"); 
    QHBoxLayout *hLayout; 
    hLayout->addWidget(button); 
    setLayout(hLayout); 
} 

listWidget::~listWidget() 
{ 

} 
+0

問題是? – Shinnok 2011-02-08 11:48:35

+0

當運行應用程序時,沒有問題的前兩個小部件來罰款,當我點擊導航第三個,它說錯誤(login.exe文件已停止工作) – selladurai 2011-02-08 11:51:23

回答

3

這裏是你的問題:

QHBoxLayout *hLayout; 
hLayout->addWidget(button); 

你忘了兩種:

  • 實例化,並分配於對象hLayout指:

    hLayout = new QHBoxLayout();
  • 或當場實例hLayout:

    QHBoxLayout hLayout; 
    hLayout.addWidget(button);

基本上你是訪問一個未初始化的指針和在大多數情況下你的應用程序會崩潰