# 简单易用的页面栈框架
首先讲一讲 `QtQuick.Control` 这个模块。其实这个模块是专门为桌面平台准备的。对移动平台支持并不完善。这是因为 `QtQuick.Control` 主要以窗口编程,而移动平台的应用大多要维系一个页面栈。这就让 `QtQuick.Control` 在一些面对页面灵活性高的手机 `app` 时,显得力不从心。例如每个页面都要支持不同的 `ToolBar` 和 `StatusBar`。
在 `QtQuick.Control` 中,`ApplicationWindow` 这个窗体提供了 `ToolBar` 和 `StatusBar`。但是却不能很好地动态切换不同的 `ToolBar` 和 `StatusBar` 来适配不同的页面。例如微信中,在主页面,他的 `ToolBar` 主要用来显示一个 `WeChat` 的应用名字和摆放一些 `ToolButton`。而 `StatusBar` 主要用来切换页面。在点击一个联系人进行聊天时,页面进行切换,或者说,将聊天的页面压入页面栈,这个时候,你发现页面顶部的 `ToolBar` 变成了显示当前联系人以及添加了一个返回按钮。而底部的 `StatusBar` 变成了输入框的。
如果直接使用 `ApplicationWindow` 来进行界面的编写的话,就会发现更换 `ApplicationWindow` 的 `ToolBar` 和 `StatusBar` 是十分困难的。首先你要维护聊天页面压入页面栈之前的 `ApplicationWindow` 的 `ToolBar` 和 `StatusBar`,在页面弹出页面栈之后,恢复原有的 `ToolBar` 和 `StatusBar`。
于是你决定阅读 `ApplicationWindow` 的源代码,发现 `ApplicationWindow` 通过 `Binding` 分别将 `ToolBar` 和 `StatusBar` 的 `parent` 属性绑定到窗体的顶部和底部。然后 `ApplicationWindow` 内部还有一个 `contentItemArea` 的区域,用来容纳窗体内的 `Item`。
在你研究源码之后发现,如果要想像页面栈那样使用 `ApplicationWindow` 来维系不同的 `ToolBar` 和 `StatusBar`,界面逻辑会变得十分复杂。
在这里提出一个简单的框架——页面栈窗体,虽然在 `QtQuick.Control` 中有提供 `StackView` 这个页面栈,但是他是继承自 `Item` 的。于是通过使用组合的方式诞生一个很简单又好用的 `StackPageWindow` ~
分别查看 [Page 实现简述](page.md),[PageStackWindow 实现简述](page-stack-window.md),[`TopBar 实现简述`](top-bar.md),[BottomBar 实现简述](bottom-bar.md) 了解详情。
查看[微信界面剖析](weixin-ui-analyse.md),了解怎么使用 QML 编写手机界面。
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Qt QML高仿微信 (160个子文件)
gradlew.bat 2KB
main.cpp 515B
build.gradle 1KB
gradlew 5KB
gradle-wrapper.jar 49KB
WeChat.jpg 149KB
tests001.jpg 77KB
WellChat01.jpg 63KB
WellChat02.jpg 53KB
WellChat03.jpg 26KB
WellChat04.jpg 25KB
UI.js 376B
UI.js 367B
LICENSE 1KB
page.md 4KB
weixin-ui-analyse.md 3KB
readme.md 2KB
README.md 1KB
bottom-bar.md 1KB
page-stack-window.md 831B
top-bar.md 762B
WellChat01.png 293KB
WellChat-01.png 149KB
WeChat.png 143KB
weixin-ui-analyse-02.png 143KB
weixin-ui-analyse-01.png 126KB
WeChat-ChatPage.png 88KB
weixin-ui-analyse-03.png 88KB
WellChat-02.png 87KB
WellChat-04.png 58KB
WellChat-03.png 52KB
a_t.png 5KB
share-position.png 5KB
share-pdf.png 4KB
a_o.png 4KB
favorites.png 4KB
a_q.png 3KB
sound.png 3KB
aez.png 3KB
af5.png 3KB
moments.png 3KB
af1.png 3KB
shake.png 3KB
af3.png 3KB
af7.png 3KB
sound.png 3KB
share-word.png 2KB
af0.png 2KB
af6.png 2KB
discover.png 2KB
af2.png 2KB
af4.png 2KB
chat-bubble.png 2KB
chat.png 2KB
chat-bubble.png 2KB
emoticon.png 2KB
emoticon.png 2KB
af8.png 2KB
share-sound.png 2KB
a6c.png 2KB
contacts.png 2KB
drift-bottle.png 2KB
settings.png 2KB
au8.png 2KB
a6b.png 2KB
a_m.png 2KB
au9.png 2KB
discover.png 2KB
me.png 2KB
magnifier.png 2KB
share-excel.png 1KB
magnifier.png 1KB
people-nearby.png 1KB
chat.png 1KB
games.png 1KB
a_l.png 1KB
a_k.png 1KB
share-url.png 1KB
a_7.png 1KB
contacts.png 1KB
a_h.png 1KB
a_j.png 1KB
scan-qr-code.png 1KB
male.png 1KB
share-music.png 1KB
female.png 1KB
ak3.png 1KB
a_i.png 1KB
ak4.png 1KB
share-picture.png 1KB
ak5.png 1KB
un-alarm.png 1KB
me.png 1021B
a_z.png 891B
share-file.png 869B
wallet.png 852B
share-zip.png 787B
my-posts.png 772B
ag2.png 710B
share-video.png 609B
共 160 条
- 1
- 2
草上爬
- 粉丝: 8189
- 资源: 167
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页