+ -
当前位置:首页 → 问答吧 → 算法讨论,关于GUI库中的窗体布局算法

算法讨论,关于GUI库中的窗体布局算法

时间:2011-12-24

来源:互联网

小弟最近在写一个GUI库,目前的QT,wxWidgets个人觉得太复杂,不适合快速开发,光入门就得几个月。
用C++写的,各组件耦合度控制的比较好。自己认为。可定制界面。
目前有一个问题就是。消息的分发和描绘管理以及按下TAB键时焦点跳转上。
我详细分析了现有的需求,觉得得有一个管理窗体的布局类(我用C++写的)
描绘的时候自底向上描绘,响应鼠标消息的时候自顶向下描绘。TAB键的时候向某个方向移动焦点。都需要管理当前视野内的窗体布局。但自己写的算法不够优雅,很冗长。
数据结构是这样描述的:

每层都有个布局类,里面有窗体指针,指向当前焦点所在窗体,每个窗体有四个指针指向周边窗体

[窗体4]-[窗体1]->[窗体2]
  |
[窗体3]

当新弹出窗体时就增加一个图层。
这样若干个图层就建立起来了。其中的遍历和检索十分麻烦。个人感觉写出得代码很难看。

各位有好的方法吗?

作者: wanruirui   发布时间: 2011-12-24

看QT和wxWidgets源码。
fltk这个轻量的gui库可可以参考

作者: hemiya   发布时间: 2011-12-24

快速上手的界面设计,你可以看下c++ builder

作者: keiy   发布时间: 2011-12-24

窗口布局不是窗口管理器的事吗?

作者: vanxining   发布时间: 2011-12-24

wxWidgets没见有自己处理窗口布局的代码

作者: vanxining   发布时间: 2011-12-24

class control//所有的控件,窗口的基类
{
control* parent;
control* pre;
control* next;
control* children;
void addchild(...)
void removechild(...)
//处理焦点
}


一般有个窗口(窗口里面有很多控件)
那么如果焦点是A,那么Tab会指向A的next ,下个兄弟,如果没有兄弟,pre->pre,指向第一个控件
只是参考,我也在写,写着写着没感觉了,写不下去了.
怎么像都不知道自己到底想写个什么样子的gui(dx版本).
心情很乱,结构也整理不好,哎祝你早日完成

作者: SyzCools   发布时间: 2011-12-24