qt - Qt Quick QML 窗口中的多种模式?
问题描述
假设我有一个包含一堆不同控件的 QML 窗口:
Window {
...
TextEdit { ... }
CheckBox { ... }
Button { ... }
etc
}
现在我希望我的窗口在某个事件上改变“模式”,并显示一组完全不同的控件。
想象一下它是多屏表单的一部分。当前状态是表单的第一页。当用户单击“下一步”按钮时,它会转到表单的第 2 页。我想添加一组代表第 2 页的新控件。
在 QtQuick/QML 中组织这个的正确方法是什么?
解决方案
一种常见的方法是使用 StackView。该组织将是这样的:
Window {
StackView {
id: stackView
initialItem: page1
}
Item {
id: footerItem
// Maybe add other buttons here too
Button {
id: nextBtn
text: "Next"
onClicked: {
stackView.push(page2);
}
}
}
Component {
id: page1
Page1 {
// Define this in separate Page1.qml file
// This is where your page 1 controls go.
}
}
Component {
id: page2
Page2 {
// Define this in separate Page2.qml file
// This is where your page 2 controls go.
}
}
}
推荐阅读
- php - 为什么我在 PHP 中使用 strlen() 函数得到相同字符串的两个不同输出?
- android - Kotlin 启动协程跳过了 Google Volley 从服务器检索信息的代码行
- python - Tensorflow:tf.contrib 弃用
- html - 样式背景图像 URL 取决于 HTML 中的变量 - Angular
- group-by - 使用 PROC SQL 折叠 SAS 中的数据
- c# - 使用 C# 按员工 ID 查询 Active Directory 以获取用户电子邮件
- sql - 在 SQL Developer 中定义变量
- xpath - XPath 表达式提取属性值
- azure - 无法添加 API 访问条目
- php - 在 Woocommerce 中为产品“评论”项目菜单添加星级和平均值