C++ 中变化布局实现思路
前些日子给我安排了一个说轻松又繁琐的工作,整理离职人员的代码。因为项目需求不同分裂出了很多个版本,但核心是不变的,现在需要将多个版本合并成一个版本。
说实话,这个工作很麻烦,首先很多程序员估计跟我的想法是一致的,不喜欢读别人的代码,尤其是代码写的还不规范,简直一团火在胸腔内熊熊燃烧!
今天,我就来更新下整合过程中遇到的一个有意思的功能,根据需求不同,展示不同的画面。大白话就是对整个展示页面进行布局变化,那么,首先来看一下最终的实现效果吧!
以下是我重新为讲解功能做的一个 demo。
功能讲解:
当前例子只是显示各个 widget 的布局操作。
左上角 4 个 widget 控制,默认右侧的 4 个窗口全部显示。隐藏指定的 widget 后,对应的布局也就随之变化。
那么,这 4 个窗口一共有哪些布局方式呢?下面表格中列举了所有的展示情况
上述图片上一共展示了 14 种效果,我们在程序中该如何区分呢?难道是定义 14 个变量进行区分么?
其实,对于初级程序员来说,这个方法是最可取的也是最方便的。随着我们对代码编写的熟练程度以及代码经验的积累,这种方式我们会逐渐抛弃的。
接下来,这篇文章的重点来了:如何管理布局展示!
大家有没有发现这样一个现象,我们无论是在 MFC 框架还是在 Qt 框架下,系统中的风格或者是标识,全都采用了 0x0001 依次递增的方式呢?
这种方式定义清晰明了,使用起来方便,用简单的枚举类型就可以解决了。
上述我才用了枚举类型,定义了四个不同页面的标识,用于区分。
单纯的查看枚举类型如何写出这 14 种不同的布局呢?此时,使用默认的枚举数值就不能实现了。
为了我们定义简单,使用方便,我们采用了进制的方式进行区分,对于不同的枚举类型,占位也各不相同,在我们后续应用时,也会更加方便。对上述枚举的修改,如下
由此分配数值,无论是哪种情况的组合,都不会重复,也不需要我们手动定义,让计算机来帮助我们完成这样内容。
程序中,我们定义一个 int 类型的变量,假设叫做:m_nWidgetLayout
,用于存储计算后的数值,也就是不同窗口的任意组合。下面我只是列举几个,具体的大家可以详细写明
在上述代码中,可以根据不同的风格设置不同的展示页面。
那么,这些风格是如何赋值到?
说白了,其实是我们如何对 int 类型的风格数据进行赋值的,此时,我们学到的标准 C++ &操作、|操作就起到作用了。
添加一个 widget
隐藏一个 widget
对于我们四个 widget 窗口都采用这种方式,让计算机来进行自己计算,省的我们在自己在拼接两个枚举时出现错误!
今天对布局的讲解任务就到这里了!
我是中国好公民 st,一名 c++开发程序猿~
版权声明: 本文为 InfoQ 作者【中国好公民st】的原创文章。
原文链接:【http://xie.infoq.cn/article/95ccdb3d9482c23a952f46776】。文章转载请联系作者。
评论