Russian Qt Forum

Qt => Общие вопросы => Тема начата: merke от Ноябрь 27, 2010, 14:39



Название: Необходимо вручную завершить работу консольного приложения
Отправлено: merke от Ноябрь 27, 2010, 14:39
Всем привет!
Столкнулся с очередной проблемой.

Мне нужно в определенный момент времени убить мою программу, делаю я это так, например:

main.cpp
Код:
#include <QtCore/QCoreApplication>
#include "myclass.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    MyClass *cla = new MyClass();
    QObject::connect(cla, SIGNAL(cl()), qApp, SLOT(quit()));
    cla->ex();
    return a.exec();
}

myclass.h
Код:
#ifndef MYCLASS_H
#define MYCLASS_H
#include <QObject>


class MyClass : public QObject
{
    Q_OBJECT
public:
    MyClass(QObject *parent = 0);

    void ex();
signals:
    void cl();

};

#endif // MYCLASS_H

myclass.cpp

Код:
#include "myclass.h"

MyClass::MyClass(QObject *parent) : QObject (parent)
{

}

void MyClass::ex()
{
    emit cl();
}


Но такой фокус не проходит. Как же мне решить данную проблему?


Название: Re: Необходимо вручную завершить работу консольного приложения
Отправлено: asvil от Ноябрь 27, 2010, 14:58
Слот quit посылает сообщение о выходе, которое должно обработаться в exec().
Скорее всего вы вызываете слот слишком рано.


Название: Re: Необходимо вручную завершить работу консольного приложения
Отправлено: merke от Ноябрь 27, 2010, 16:01
Спасибо, точно. Установил таймер и вуаля)))