Qt QML映射绑定

Qt QML映射绑定,qt,qml,qt5,qt5.3,Qt,Qml,Qt5,Qt5.3,我完全不懂Qt,所以我的问题听起来可能太愚蠢了,但我真的需要帮助。我知道C++有点,就是这样。 我的任务是编写一个C++程序,它读取INI相同的文件(我可以这样做,但不确定大多数正确/QT方式) 或 如果属性应该是强类型的。文件格式不是很重要。为了说明这一点,我不知道这个文件将定义什么属性,在编译时我不知道名称或类型 之后,程序加载QML文件(我可以这样做),并将加载的文件数据(不知道如何做)作为JavaScript对象注入,例如名为“Settings”,以便QML属性绑定像使用JavaScri

我完全不懂Qt,所以我的问题听起来可能太愚蠢了,但我真的需要帮助。我知道C++有点,就是这样。 我的任务是编写一个C++程序,它读取INI相同的文件(我可以这样做,但不确定大多数正确/QT方式)

如果属性应该是强类型的。文件格式不是很重要。为了说明这一点,我不知道这个文件将定义什么属性,在编译时我不知道名称或类型

之后,程序加载QML文件(我可以这样做),并将加载的文件数据(不知道如何做)作为JavaScript对象注入,例如名为“Settings”,以便QML属性绑定像使用JavaScript对象一样使用它

Rectangle {
   width: Settings.width
}
因此,问题是:

  • 读取INI文件最正确的/qt样式是什么
  • 如何将读取数据作为JavaScript对象注入QML,以便QML属性绑定将使用它

  • 第一:最具Qt风格的方式是使用
    QSettings
    class:

    QSettings *settings = new QSettings("G:/options1.ini",QSettings::IniFormat);
    
    qDebug()<< "height" <<settings->value("height").toInt();
    qDebug()<< "width" <<settings->value("width").toInt();
    
    输出:

    height 20 
    width 15 
    
    请参阅该类的说明。这真的很有帮助

    QSettings *settings = new QSettings("G:/options1.ini",QSettings::IniFormat);
    
    qDebug()<< "height" <<settings->value("height").toInt();
    qDebug()<< "width" <<settings->value("width").toInt();
    
    height=20
    width=15
    
    height 20 
    width 15