在运行时更改 QML 小部件
Posted
技术标签:
【中文标题】在运行时更改 QML 小部件【英文标题】:Change a QML widget at runtime 【发布时间】:2014-10-28 16:27:19 【问题描述】:有没有办法根据 QVariant 的数据类型在 ListView 中使用不同的 QtQuick 小部件?
如果我的 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 类型并创建新的小部件,将所有必要的属性连接到模型等等。我不确定这是否可行,或者这是否适合这种情况。
【问题讨论】:
【参考方案1】:Item
width: parent.width; height: parent.height
Loader
id: myLoader
source: parent.width<200 ? "ConditionMet.qml" : "ConditionNotMet.qml"
width: 200
height: 100
这是一个示例代码,您可以使用它来根据条件加载不同的模块。您可以使用相同的代码来适应您的情况。 基本上使用带有条件源的加载器。
【讨论】:
以上是关于在运行时更改 QML 小部件的主要内容,如果未能解决你的问题,请参考以下文章