Can't run my project.



  • Только начал изучать данную библиотеку и столкнулся со следующей проблемой:
    При запуске этого кода

    @#ifndef WIDGET_H
    #define WIDGET_H

    #include <QWidget>
    #include <QPushButton>

    class Widget : public QWidget
    {
    Q_OBJECT

    public:
    Widget(QWidget *parent = 0);

    QPushButton* createButton(const QString& str);
    
    ~Widget();
    

    public slots:
    void slotButtonClicked();
    };

    #endif // WIDGET_H@

    @#include "widget.h"
    #include <QLayout>

    Widget::Widget(QWidget parent)
    : QWidget(parent)
    {
    QGridLayout
    l = new QGridLayout;
    for (int i = 0; i < 9; i++)
    for (int j = 0; i < 4; j++)
    l->addWidget(createButton(QString::number(i+j+1)), i, j);
    setLayout(l);
    }

    QPushButton* Widget::createButton(const QString &str)
    {
    QPushButton* b = new QPushButton(str);
    connect (b, SIGNAL(clicked()), SLOT(slotButtonClicked()));
    return b;
    }

    void Widget::slotButtonClicked()
    {
    ((QPushButton*)sender())->setChecked(true);
    }

    Widget::~Widget()
    {

    }
    @

    я получаю либо это
    Запускается C:\Qt\projects\cards3\release\cards3...
    Программа неожиданно завершилась.
    C:\Qt\projects\cards3\release\cards3 завершился с кодом -1073741819

    либо вот такое окошко
    !rghost.ru/48344167/image.png()!

    Что я делаю не так?



  • QPushButton* createButton(const QString& str);

    Вы возвращаете указатель на уничноженный объект. Внутри createButton вы создали его с помощью new, а когда вышли, то объект уничтожился.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.