我想将存在警报的QSettings对象保存到某些INI文件中以进行备份。
QSettings来自应用程序的全局设置,即。它可以是注册表,ini文件等。

如果有帮助,我的上下文是:

class Params
{
    // All params as data members
    // ...
    void loadGlobal ()
    {
        Qettings s; // Global parameters, paths set by application
        // Fill data members: s.value (...);
    }
};

class Algo
{
    Result run (Params p)
    {
        Result r = F(p);
        return r;
    }
};

int main (...)
{
    Params p;
    p.loadGlobal ();
    Algo a;
    Result r = a.run (p);

    // At this point, save Result and Params into a specific directory
    // Is there a way to do:
    p.saveToIni ("myparams.ini"); // <-- WRONG
}

一种解决方案是在saveTo (QSetting & s)类中添加Params方法:
class Params
{
    void saveTo (QSettings & s)
    {
        s.setValue (...);
    }
};

int main (...)
{
    Params p;
    p.loadGlobal ();
    QSettings bak ("myparams.ini", ...);
    p.saveTo (bak);
}

但是我正在寻找一个无需修改Params类的解决方案。

最佳答案

好吧,不,QT并不真的直接支持此功能。我认为您最好的选择是编写帮助程序类……

void copySettings( QSettings &dst, QSettings &src )
{
    QStringList keys = src.allKeys();
    for( QStringList::iterator i = keys.begin(); i != keys.end(); i++ )
    {
        dst.setValue( *i, src.value( *i ) );
    }
}

关于qt - 将QSetting保存(已存在)到INI文件中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8930844/

10-15 06:35