在Qt中创建自定义Qwidget?

时间:2011-02-08 11:46:32

标签: qt qt4

我创建了示例应用程序,因为我从UI表单中使用了前两个Qwidget,第三个小部件是自定义的。我创建了一个cpp文件和头文件。构建运行应用程序时没有问题前两个小部件正常,当我单击导航第三个时,它说错误(login.exe文件已停止工作) 我的头文件是:

#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()
{

}

1 个答案:

答案 0 :(得分:3)

这是你的问题:

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

你忘记了:

  • 在对象上实例化并指定hLayout指向:

    hLayout = new QHBoxLayout();
  • 或当场实例化hLayout:

    QHBoxLayout hLayout;
    hLayout.addWidget(button);

基本上你是取消引用一个未初始化的指针,在大多数情况下你的应用程序会崩溃。