我有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();
}
myserver.h
class MyServer : public QTcpServer
{
Q_OBJECT
public:
MyServer(QObject *parent = nullptr);
~MyServer();
QFile* file;
}
myserver.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,但它不会。
答案 0 :(得分:2)
MyServer::file
可能是你的问题。您是否在代码中的其他位置打开该文件以进行写访问?因为QSettings
将尝试也打开同一个文件,并且您对同一文件的两次并发访问可能会破坏其内容。
如果您不需要MyServer::file
任何东西,那么就摆脱它。 QSettings
不需要QFile
。它只需要文件名。