Помогите пожалуйста понять в чём ошибка.
Пример во вложении и тут:
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();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui>
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
public slots:
void slotTest();
};
#endif
mainwindow.cpp
#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";
}
looper.h
#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
looper.cpp
#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
Qt 4.7.4 Mac OS 10.6.8