2014-10-28 2 views
0

Есть ли способ использовать различные виджеты QtQuick в ListView на основе типа данных QVariant?Изменение виджета 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 
    } 

} 


Это пример кода, который можно использовать для загрузки различных модулей, основанных на условиях .Вы можете использовать то же самое, чтобы соответствовать вашему делу.
В основном используется погрузчик с условным источником.

Смежные вопросы