создать собственный Qwidget в Qt? - PullRequest
1 голос
/ 08 февраля 2011

Я создаю пример приложения, в котором были использованы первые два 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 Ответ

3 голосов
/ 08 февраля 2011

Вот ваша проблема:

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

Вы забыли либо:

  • создать экземпляр объекта и присвоить объекту hLayout, чтобы указать:

    hLayout = new QHBoxLayout();
  • или создание экземпляра hLayout на месте:

    QHBoxLayout hLayout;
    hLayout.addWidget(button);

По существу, вы разыменовываете неинициализированный указатель, и в большинстве случаев ваше приложение аварийно завершает работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...