Qt 5.1.0中是否还支持QCoreApplication的aboutToQuit()信号?

时间:2014-01-28 14:44:32

标签: c++ qt

程序在打开.txt文件时启动。退出后,我希望它关闭.txt文件。以下是代码段:

MYRELAYSERVER:

void MyRelayServer::exitHandler()
{
    qDebug() << mFileName << " closed!" << mTcpPort;
    if (mDataLog)
        mTextStream << mFileName << " closed!" << mTcpPort;
    mFile.close();

}

MAIN:

#include <QCoreApplication>
#include "myrelayserver.h"
#include <QDebug>
#include <QObject>


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    MyRelayServer server(9999);
    QObject::connect(&a, SIGNAL(aboutToQuit()), &server, SLOT(exitHandler()));
    return a.exec();
}

但是,它不执行exitHandler。

enter image description here 它也不会显示来自QCoreApplication a的信号的任何智能感知。 enter image description here

2 个答案:

答案 0 :(得分:2)

有同样的问题。 不知道原因,但将a更改为指针固定它。

#include <QCoreApplication>
#include "myrelayserver.h"
#include <QDebug>
#include <QObject>


int main(int argc, char *argv[])
{
    QCoreApplication *a = new QCoreApplication (argc, argv);
    MyRelayServer server(9999);
    QObject::connect(a, SIGNAL(aboutToQuit()), &server, SLOT(exitHandler()));
    return a->exec();
}

至少在自动填充中可用(在Qt Creator中)。

答案 1 :(得分:0)

C ++中正确设计的类实现了RAII概念。 QFile也是这样做的。因此,您无需担心手动关闭文件。只要您不泄漏QFile对象的实例,它就会在销毁时关闭。

为什么不亲自检查qcoreapplication.h header