У меня есть следующий фрагмент кода, который должен обеспечить функциональность 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
.