Пользовательские функции QSettings не вызваны - PullRequest
1 голос
/ 16 апреля 2019

У меня есть следующий фрагмент кода, который должен обеспечить функциональность XML для Qsettings в конечном итоге:

/**
 * @brief   Custom XML format reading function.
 * @param   device: ie. the read file.
 * @param   map: key + value to read
 * @return  non zero on succesfull read.
 */
static bool readXmlFile(QIODevice& device,  QSettings::SettingsMap& map)
{
    qDebug() << __func__ << " called";
    (void)device;
    (void)map;
    return false;
}

/**
 * @brief   Custom XML format writing function.
 * @param   device: ie. the written file.
 * @param   map: key + value to read
 * @return  non zero on succesfull write.
 */
static bool writeXmlFile(QIODevice& device, const QSettings::SettingsMap& map)
{
    qDebug() << __func__ << " called";
    (void)device;
    (void)map;
    return false;
}

/**
 * @brief   Initializes the settings object.
 * @param   path: Full path to the file. If it doesnt exist, it is created.
 * @param   parent: the parent object.
 */
Cxmlsettings::Cxmlsettings(const QString& path, QObject *parent) :
    QObject(parent)
{
    QFileInfo fi(path);
    if (!fi.exists() || !fi.isFile())
    {
        // config file doesnt exist, create it.
        QFile cFile(path);
        if (!cFile.open(QIODevice::NewOnly))
        {
            qCritical() << "Failed to create " << path << " file";
            return;
        }

        cFile.close();
    }

    const QSettings::Format xmlformat =
            QSettings::registerFormat("xml", &readXmlFile, &writeXmlFile);

    m_settings.setPath(xmlformat, QSettings::UserScope, path);
    m_settings.setValue("abc", 10);
    volatile const int test = m_settings.value("abc").toInt();
}

Моя проблема в том, что после того, как я установил путь для переменной m_settings,и запустить функции записи и чтения, мои пользовательские функции readXmlFile и writeXmlFile не вызываются.Файл в path всегда существует, потому что он создается, если он не существует до вызова setValue.

...