2010-10-27 4 views
23

Я использую QSettings для хранения некоторых данных в качестве ini-файла в Windows. Я хочу видеть файл ini, но я не знаю, где находится файл ini.QSettings - где находится файл ini?

Это мой код:

QSettings *set = new QSettings(QSettings::IniFormat, QSettings::UserScope, "bbb", "aaa"); 
set->setValue("size", size()); 
set->setValue("pos", pos()); 

Где я должен смотреть? Или, может быть, я пропустил код, который записывает его в файл? Когда значение QSettings записывает свои значения?

ответ

8

Я думаю, что вы найдете все, что вы ищете здесь: http://doc.qt.io/archives/qt-4.7/qsettings.html

Это конкретный цех изготовления печатных форм, см под:

Platform-Specific Notes Места, где Настройки приложения сохраняются

вас также может хранить настройки в файлах:

QSettings settings("/home/petra/misc/myapp.ini", 
       QSettings::IniFormat); 
2

Если вы создали QSettings без указания определенного пути, файл ini будет расположен в application path.

QSettings Settings("myapp.ini", QSettings::IniFormat); 
Settings.setValue("Test", "data"); 

//... 
qDebug() << QApplication::applicationDirPath(); 

Будьте осторожны: путь приложения может измениться: например, если вы developping приложения с помощью Qt Creator, в режиме отладки, путь приложения находится в /debug вложенном.

Если вы используете его в режиме деблокирования, путь приложения находится в подпапке /release.

И когда ваше приложение развернуто, по умолчанию путь приложения находится в той же папке, что и исполняемый файл (по крайней мере, для Windows).

+0

Я не уверен, что это действительно работает, я пробовал, но не смог найти настройки в пути приложения. – Kiril

+0

QApplication: applicationDirPath() обычно не доступен для записи, поэтому вряд ли он будет использоваться в качестве места для файла, созданного во время выполнения. Возможно, вы имели в виду текущий рабочий каталог приложения? –

6

QSettings сохранить изменения местоположения на QSettings.Scope enum. QSettings сохранить по умолчанию в локальной области. В Linux, я нашел свои локальные настройки:

~/.config/CompanyName/ApplicationName.conf

+0

Да! Это то, что я хотел знать - 'QSettings settings;' - без каких-либо путей. Как и здесь: http://stackoverflow.com/a/3598245/1338797 –

26

Чтобы распечатать точное местоположение вашего файла настроек метода использования метода FileName класса QSettings.

QSettings settings("folderName", "fileName"); 
qDebug() << settings.fileName(); 

выход консоли выглядит то, как:

/home/user/.config/folderName/fileName.conf 
+3

Базовый путь (без имени файла) также можно получить через 'QStandardPaths :: writableLocation()' используя 'QStandardPaths :: ConfigLocation' в качестве типа –

0

В Mac OSX, я нашел файл под в ~/Library/Preferences

QSettings класс обеспечивает постоянную независимую от платформы приложения настройки. Обычно пользователи ожидают, что приложение запомнит его настройки (размеры и позиции окна, параметры и т. Д.) В сеансах. Эта информация часто хранится в системном реестре в Windows и в файлах настроек XML в Mac OS X.В системах Unix, при отсутствии стандарта, многие приложения (включая приложения KDE) используют INI текстовые файлы

http://doc.qt.io/archives/qt-4.7/qsettings.html

0

Отъезд QStandardPaths класс, он связывается с несколькими стандартными путями, включая конфигурацию на всех поддерживаемых платформ. https://doc.qt.io/qt-5/qstandardpaths.html

QT> = 5,5:

QString path = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation); 

< QT 5,5:

QString path = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); 

Есть пути для конфигурационных файлов в общих конфигурационных каталогах, каталогах данных приложений и многих других.

Смежные вопросы