程序在打开.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。
它也不会显示来自QCoreApplication a的信号的任何智能感知。
答案 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?