我的 qt 控制台应用程序有问题,MyServer 类的析构函数没有被调用。 这是我的简化代码:
#include <QtCore/QCoreApplication>
#include "MyServer/myserver.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyServer server;
server.startServer();
return a.exec();
}
我的服务器.h
class MyServer : public QTcpServer
{
Q_OBJECT
public:
MyServer(QObject *parent = nullptr);
~MyServer();
QFile* file;
}
我的服务器.cpp
MyServer::MyServer(QObject *parent)
: QTcpServer(parent)
{
file = new QFile("file.ini",this);
}
MyServer::~MyServer()
{
QSettings settings(file->fileName(), QSettings::IniFormat, this);
settings.beginGroup("testGroup");
settings.setValue("testValue", "asdf");
settings.endGroup();
}
析构函数应该更改 file.ini,但它没有。
最佳答案
MyServer::file
可能是您的问题。您是否在代码的其他地方打开该文件以进行写访问?因为 QSettings
也会尝试打开同一个文件,而您对同一个文件的两个并发访问可能会破坏其内容。
如果您不需要 MyServer::file
做任何事情,那么就摆脱它。 QSettings
不需要 QFile
。它只需要文件名。
关于c++ - 未调用 QT 析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48690734/