QT开发中文网

QFile configFile("config.cfg"); if (!configFile.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug()

在你的代码中,问题出现在关闭文件的位置。当前的关闭文件操作位于循环内部,导致每次循环执行后都会关闭文件。因此,在第二次循环时就会报错 “QIODevice::read (QFile, “config.cfg”): device not open”,因为文件已经在第一次循环中被关闭了。

为了解决这个问题,你应该将configFile.close()移动到while循环外部,并确保在读取完配置文件后才关闭它。修改后的代码如下:

QFile configFile("config.cfg");
if (!configFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
    qDebug() << u8"无法打开配置文件!";
    return;
}

QTextStream in(&configFile);

while (!in.atEnd()) {
    QString line = in.readLine();

    // 假设配置文件每行都是key=value形式
    int delimiterPos = line.indexOf('=');
    if (delimiterPos != -1) {
        QString key = line.left(delimiterPos).trimmed();
        QString value = line.mid(delimiterPos + 1).trimmed();

        // 这里可以根据需要处理读取到的参数值,比如存入变量、传递给函数等等
        //qDebug() << "Key: " << key << ", Value: " << value;
        // 根据需要处理读取到的参数值
        if(key == "isOpenDiskMonitor")
        {
            bool Value;
            if(value == "0")
            {
                Value = false;
            }
            else
            {
                Value = true;
            }
            CDiskCapacityManage::instance()->isOpenDiskMonitor = Value; // 将port赋值给相应变量
            qDebug() << CDiskCapacityManage::instance()->isOpenDiskMonitor;
        }
        if(key == "capacity")
        {
            CDiskCapacityManage::instance()->capacity = value;
            qDebug() << CDiskCapacityManage::instance()->capacity;
        }
        if(key == "strDisk")
        {
            CDiskCapacityManage::instance()->strDisk = value;
            qDebug() << CDiskCapacityManage::instance()->strDisk;
        }
        if(key == "strDisk")
        {
            CDiskCapacityManage::instance()->pathDisk = value;
            qDebug() << CDiskCapacityManage::instance()->pathDisk;
        }
    }
}

configFile.close(); // 关闭文件

通过将configFile.close()放在while循环之后,你可以确保在读取完整个配置文件后才关闭它,避免了重复关闭文件导致的错误。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=8382

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?