2017-05-27 90 views
0

我在qml文件中有一些按鈕,我想讓它們可以從設置文件進行編輯。因此我使用QSettings讀取我的settings.ini文件並將數據傳遞給qml。QSettings&unicode

所有的作品都很好,直到我嘗試讀取unicode格式的圖標。 我發現這個question但答案不適合我。由於「QString icon2 = QString :: fromUtf8(」\ uf00c「);」「這樣的設置可以使用UTF-8格式。作品,問題必須是QSettings。

任何想法?

main.cpp 

---------- 
int main(int argc, char *argv[]) 
{ 
    // locale code doesnt help 
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); 

    QGuiApplication app(argc, argv); 
    QList<QObject*> dataList; 

    QSettings *settings = new QSettings("settings.ini", QSettings::IniFormat); 
    // settings code doesnt change anything 
    settings->setIniCodec(QTextCodec::codecForName("UTF-8")); 


    settings->beginGroup("icons"); 
    // read settings 
    QString icon1 = settings->value("icon1").toString(); 
    // test 
    QString icon2 = QString::fromUtf8("\uf00c"); 
    settings->endGroup(); 

    qDebug() << "icon1:" << icon1; 
    qDebug() << "icon2:" << icon2; 

    // to qml 
    MyData *data1 = new MyData(); 
    data1->setIcon(icon1); 
    MyData *data2 = new MyData(); 
    data2->setIcon(icon2); 

    dataList.append(data1); 
    dataList.append(data2); 

    QQmlApplicationEngine engine; 
    engine.rootContext()->setContextProperty("mydata", QVariant::fromValue(dataList)); 
    engine.load(QUrl("qrc:/main.qml")); 

    return app.exec(); 
} 


qml 

---------- 
FontLoader { id: fontAwesome; source: "qrc:/fontawesome-webfont.ttf" } 
Repeater { 
    model: mydata 

    Grid { 
     rows: 1 
     spacing: 5 

     Text { 
      text: index 
      color: "black" 
     } 
     Text { 
      font: fontAwesome.name 
      text: model.icon 
      color: "black" 
     } 
    } 
} 

的Settings.ini


[圖標] ICON1 = \ uF00C

輸出:


ICON1: 「F00C」 ICON2: 「\ uF00C」

QML輸出

+1

爲什麼在Qt中使用UTF-8編碼? – MrEricSir

回答

0

貌似我只是在完全錯誤的軌道.. INI文件逃逸的作品就好了。

\x....