【问题标题】:Parsing ini-File in Qt [closed]在Qt中解析ini文件[关闭]
【发布时间】:2013-07-07 09:10:06
【问题描述】:

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

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

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

我尝试了多种组合,但都不起作用。谁能给我一个相同的语法?这里的返回值应该是什么?一个标签,我已经在 Qt 设计器中创建了标签。假设label1。但是有很多标签。请告诉我。

【问题讨论】:

  • 如果您能提供确切的代码和您尝试过的一些组合,将会非常有帮助。

标签: qt parsing label ini


【解决方案1】:

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 &amp; 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(); 

如果你想处理嵌套元素和 gui 布局和设计,我会考虑 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

希望对您有所帮助。

【讨论】:

  • 这段代码不会编译(因为有 2 个s 变量)并且会迷惑一些人。你应该把它分成几个代码块。
  • 我不确定我是否喜欢它现在的外观,但我的大部分答案都是为了将​​用户指向文档的正确部分。耸耸肩。
  • 你好菲亚特。感谢您提供的信息,但我不能使用 QSettings,我应该使用内置解析器。我记得的语法是:int width = parser_object_name->findchild(same as above).toInt();请让我知道如何为多个图像标签执行此操作。非常感谢。
  • 我认为更多使用解析器的示例代码 + ini 文件的外观对于帮助您解决问题是必要的。很难假设解析器将如何工作或处理变量等。例如:什么不起作用?什么在起作用?你的ini文件里有什么?等等
  • 明天我会发布更多细节。非常感谢 Phyatt。
猜你喜欢
  • 2012-11-18
  • 1970-01-01
  • 2021-01-06
  • 2018-08-30
  • 2012-09-24
  • 2019-03-09
  • 2010-09-29
  • 1970-01-01
  • 2010-09-05
相关资源
最近更新 更多