c++ - 未调用 QT 析构函数

标签 c++ qt

我的 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/

相关文章:

c++ - 如何禁用 Openscenegraph 几何节点中的状态属性?

c++ - 为什么 Qt Creator Ubuntu 发布屏幕是空的?

macos - 如何在 Mac Qt App 中查找非公共(public) API 的使用情况

c++ - 库存大楼

c++ - 根据SSE特性调用不同的函数实现

c++ - 混合模板化参数类型

c++ - 当人们谈论并发时, "transaction"是什么意思?

c++ - 如何将 Button_SetElevationRequiredState 与 QPushButton 一起使用?

c++ - SQLite增量整数主键和唯一约束冲突

c++ - QTreeWidgetItem 通过文本查找子项