我理解的QQ登录框是一个外层对话框QDialog里面包含两层QWidget: 背景层和响应层。
QQ登录框有三种背景:Flash动画、画卷•中国和背景图片(早期QQ)。
响应层包括四个界面:登录界面、添加QQ账号、多账户登录界面和管家安全登录界面。
如下所示:
实现思路及分工:
1、 外层对话框LoginDialog(继承自QDialog),负责对话框的拖动,关闭、最小化[ToolWidget]、圆角和阴影。
2、 背景层BackgroundWidget:使用策略模式实现,根据不同参数创建不同的背景[FlashWidget、PictureScrollWidget、ImageWidget]。
3、 响应层QStackedWidget, 使用QStackedWidget进行不同界面之间的切换
[AddQQWidget、MultiAccountLoginWidget、LoginWidget、SafeLoginWidget]。