2014-10-28 60 views
0

有沒有一種方法可以在基於QVariant數據類型的ListView中使用不同的QtQuick小部件?在運行時更改QML小部件

如果我的QVariant是一個布爾類型,那麼這個小部件將是一個複選框。 如果它是一個整數,該小部件將是一個SpinBox。 如果它是一個QString,該小部件將是一個TextBox。

...等...

我想加載/保存我的應用程序設置和QSettings。

例如:

QSettings settings("userSettings.ini", QSettings::IniFormat); 
setAutoUpdate(settings.value("AutoUpdate").toBool()); 
setAutoUpdateFrequency(settings.value("AutoUpdateFrequency").toInt()); 
setLastFilePath(settings.value("LastFilePath").toString()); 

如通過轉化來推斷,我的autoUpdate類型是布爾值,我的autoUpdateFrequency是一個整數,和我的lastFilePath是爲QString。我希望在設置/首選項對話框中填充一個列表,而不必對錶單上的每個值進行硬編碼和手動定位。

一位同事的一個建議是,Javascript可以在創建時確定QVariant類型並創建新的小部件,將所有必要的屬性連接到模型等等。我不確定這是否會奏效,或者這是否適合這種情況。

回答

0
Item { 
    width: parent.width; height: parent.height 

    Loader { 
     id: myLoader 
     source: parent.width<200 ? "ConditionMet.qml" : "ConditionNotMet.qml" 
     width: 200 
     height: 100 
    } 

} 


這是一個示例代碼,你可以用它來加載基於條件。您可以使用相同的,以適應你的情況不同的模塊。
基本上使用帶條件源的加載器。