2013-07-09 66 views
0

我正在使用定制的INI解析器,其参数是表单名称,父窗口小部件。语法如下:在qt中解析ini文件

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

我可能有一点点语法错误,因为我现在没有与我的代码。我想添加一些INI文件第2页中提到的标签。这些图像的属性在ini文件本身中提到。即使是绝对路径等。

我尝试了多种组合,但它不起作用。任何人都可以给我一个相同的语法?这里应该有什么回报值?一个标签,我已经在Qt designer中创建了标签。比方说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文件这种方式在特定的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创建的UI文件的原生方式。

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

我不确定我是否喜欢它现在的外观,但我的大多数答案的重点是将用户指向文档的正确部分。耸肩。 – phyatt

+0

你好Phyatt。感谢您的信息,但我不能使用QSettings,我应该使用内置的解析器。我记得的语法是:int width = parser_object_name-> findchild(与上面相同).toInt();请让我知道如何为多个图像标签做到这一点。非常感谢你。 –