Доброе время суток!
Помогите пожалуйста понять в чём ошибка.
Пример во вложении и тут:
main.cpp
#include <QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow *mainWin = new MainWindow();
mainWin->show();
return app.exec();
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui>
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
public slots:
void slotTest();
};
#endif
#include "mainwindow.h"
#include "looper.h"
MainWindow::MainWindow()
{
setAttribute(Qt::WA_DeleteOnClose);
QMetaObject::invokeMethod(this, "slotTest", Qt::QueuedConnection);
}
void MainWindow::slotTest()
{
Looper r(this);
r.execloop();
qDebug() << "done";
}
#ifndef LOOPER_H
#define LOOPER_H
#include <QObject>
#include <QEventLoop>
class Looper : public QObject
{
Q_OBJECT
public:
explicit Looper(QObject *parent = 0);
void execloop();
private:
QEventLoop loop;
};
#endif // LOOPER_H
#include <QDebug>
#include "looper.h"
Looper::Looper(QObject *parent) :
QObject(parent)
{
qDebug() << "obj" << this;
}
void Looper::execloop()
{
qDebug() << "start loop";
loop.exec();
qDebug() << "end loop";
}
obj Looper(0x7fff5fbfe2c0)
start loop
crash(36249,0x7fff709ffcc0) malloc: *** error for object 0x7fff5fbfe2c0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Не нужно указвать parent для объектов создаваемых на стеке.
void MainWindow::slotTest()
{
Looper r;
r.execloop();
qDebug() << "done";
}
Спасибо больщушее!
Не пойму как я сам не сообразил..
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)