2013-07-09 2 views
0

Я использую пользовательский обработчик INI, для которого параметры являются именем формы, родительским виджетами. Синтаксис выглядит следующим образом:разбор ini-файла в qt

int width = w->findchild("form_name","section_to_be_accessed_name").toInt(); 

я, возможно, немного неправильно с синтаксисом, потому что у меня нет кода со мной прямо сейчас. Я хочу добавить несколько ярлыков, упомянутых на странице 2 файла INI. Свойства этих изображений упоминаются в самом файле ini. Даже абсолютный путь и т. Д.

Я пробовал несколько комбинаций, но он не работает. Может ли кто-нибудь дать мне синтаксис для того же самого? Какая должна быть обратная стоимость здесь? Ярлык, я уже создал метки в дизайне Qt. Скажем, label1. Но есть много ярлыков. Пожалуйста, дайте мне знать.

+1

Было бы очень полезно, если бы вы могли предоставить точный код и некоторые из сочетаний, которые вы пробовали. – dethtron5000

ответ

7

QSettings - отличный класс, который отлично подходит для обработки файлов INI. Я бы это проверить. Он был оптимизирован хорошо и очень надежный. Он также использует QVariant очень умным способом. Он также хорошо управляет «группами».

http://qt-project.org/doc/qt-4.8/qsettings.html

// in your main, or somewhere very early in your program 
qApp->setApplicationName("Star Runner"); 
qApp->setOrganizationName("MySoft"); 

QSettings::setDefaultFormat(QSettings::IniFormat); 

Позже, когда вы хотите получить доступ или установить настройки

QSettings s; // in windows this would be 
// C:/Users/<username>/AppData/Roaming/MySoft/Star Runner.ini 

Или вы можете указать ваш INI-файл таким образом, чтобы указать на конкретном ини файле

QSettings::QSettings (const QString & fileName, Format format, QObject * parent = 0)

QSettings s("path/to/my/inifile.ini", QSettings::IniFormat); 

А теперь пример использования параметров переменные:

// set the setting 
s.setValue("group_name/setting_name", new_value); 

// retrieve the setting 
// Note: Change "toType" to whatever type that this setting is supposed to be 
current_value = s.value("group_name/setting_name", default_value).toType(); 

Если вы хотите обрабатывать вложенные элементы и макеты графического интерфейса и дизайн, я хотел бы посмотреть на XML или JSON. Оба поддерживаются Qt.

XML - это родной способ, которым Qt Creator хранит файлы пользовательского интерфейса, созданные Qt Designer.

http://qt-project.org/doc/qt-5.0/qtxml/qtxml-module.html

http://qt-project.org/doc/qt-5.0/qtcore/json.html

Надежда, что помогает.

+0

Этот код не будет компилироваться (из-за 2 '' 'переменных) и может смутить кого-то. Вы должны разделить его на несколько блоков кода. –

+2

Я не уверен, нравится ли мне, как это выглядит сейчас, но основная часть моих ответов - указать пользователю правильную часть документации. Shrug. – phyatt

+0

Здравствуйте, Phyatt. Спасибо за информацию, но я не могу использовать QSettings, я должен использовать встроенный парсер. Синтаксис, который я помню, это: int width = parser_object_name-> findchild (то же, что и выше) .toInt(); Пожалуйста, дайте мне знать, как это сделать для нескольких ярлыков изображений. Большое спасибо. –