• 10374阅读
  • 24回复

一起讨论一下qt设计,采用什么样的架构,效率比较好。 [复制链接]

上一主题 下一主题
离线netlove
 

只看楼主 倒序阅读 楼主  发表于: 2008-10-15
— 本帖被 XChinux 执行取消加亮操作(2008-10-15) —
上网上搜感觉这方面的资料比较少,所以希望一起交流一下
离线water_wf

只看该作者 1楼 发表于: 2008-10-15
鄙视挖坑不填的主
离线netlove

只看该作者 2楼 发表于: 2008-10-15
挖坑不填?什么意思?我怎么招来您老人家的骂了?
离线water_wf

只看该作者 3楼 发表于: 2008-10-15
好歹您也得填的
离线netlove

只看该作者 4楼 发表于: 2008-10-15
我不懂什么叫填,因为我很少混论坛。但是您就凭此鄙视我,您也太武断了吧,我没发现我比别人做的过份在哪儿?何况只要我感觉自己会的,我基本上在论坛上都给出回答。如果这样您都说我有问题,那样看来,这个论坛我也没必要混了,确实我也没那么高的本事在论坛上混,毕竟,自己也刚刚开始学这方面的东西,门也就只进去一只脚。
离线water_wf

只看该作者 5楼 发表于: 2008-10-15
看来你确实很少混论坛,请你填下,是请你先发表高见,天涯上的网络词汇啊,不然楼主都没意见,成了太监贴,岂不是更被鄙视?
离线priestmoon

只看该作者 6楼 发表于: 2008-10-15
我想water_wf的意思是让楼主在发贴的同时能够先发表一下自己的意见,好让后来人接砖抛玉吧。
我个人的意见是:楼主与其抛出一个笼统的标题,让大家揣测讨论的范围。倒不如举出楼主自己在做项目过程中的若干个实例,就实际问题谈谈自己是如何解决,如何构思,有哪些困惑或者不足之处,那么也许看帖者就会更加清楚楼主的意图,从而就你的情况提出自己的见解,或是对别人的意见发表评论,这才是真正的讨论不是吗?
至于架构,对于刚学Qt不到一个月,连控件的写法和api调用都不熟练的我来说,是一个很高级的主题。目前的我尚不具备讨论这个的资质。不过我对楼主提出的问题很感兴趣,希望看到坛中高手的意见和评论。希望这个帖子能够成为大家各抒己见的平台!
离线lazybone
只看该作者 7楼 发表于: 2008-10-15
没事了 说明白了就好了 呵呵
离线netlove

只看该作者 8楼 发表于: 2008-10-15
这个现在至少明白了什么叫挖坑,什么叫填,还是得谢谢楼上那位,至于什么架构之类的,我等工作回家后把自己的几个思路整出来,再发上来,然后看看一起的意见。我也是不是很明白,毕竟刚接触半年,确实是半瓶子水的阶段,网上看到有本C++设计模式—QT4什么的,我忘了,好像是评价不怎么好好,看来这方面的资料确实不多
离线frankpaine
只看该作者 9楼 发表于: 2008-10-15
2楼应该是玩笑吧。。。
设计先要写那么几千行oo代码,然后看uml,看设计才有切身体会。

小弟最近在看《java设计模式》,觉得其实语言只是表述的载体,23种模式c++项目也能用。
[ 此贴被frankpaine在2008-10-15 22:46重新编辑 ]
离线water_wf

只看该作者 10楼 发表于: 2008-10-16
确实设计模式要在实际实践中才会用切身的体会,不过不一定oo中才存在设计模式,看看linux内核,工厂模式,代理模式,访问者模式,都可以看到原型,对linux驱动方面有研究的话应该很清楚,另外我觉得,设计模式跟语言无关,灵活运用才是关键
离线jssx
只看该作者 11楼 发表于: 2008-10-16
有道理,模式不限于语言
离线frankpaine
只看该作者 12楼 发表于: 2008-10-16
嗯。不过语言特色也很重要,比如Qt有signal/slot机制,java有接口。
语法支持可以少敲代码,避免重复发明轮子。
其实关键是实际应用。写得多了,自己也能总结。

其实我最早是写了一千多行纯面向过程(当时连stl都不知道,链表都自己写,惭愧)。
后来写GUI程序了,转向oo,写了几个vc,qt,delphi的程序,累计也有四五千行了。

到现在终于觉得工程、设计、文档的重要。
下学期学软件工程,哈哈~~
[ 此贴被frankpaine在2008-10-16 13:32重新编辑 ]
离线water_wf

只看该作者 13楼 发表于: 2008-10-17
设计模式最主要的用途在事务和数据处理,写gui程序,我现在觉得qt model/view模型,数据和gui还是邦的太死,当然比window进步很多,但如果改成其它gtk,wxwidget的话,还是需要很多修改,wxwidget不能流行开的一个原因因为设计模式太死板,数据和程序框架完全绑到一块
离线snow_man_0

只看该作者 14楼 发表于: 2008-10-17
model/view模型应该属于观察者Observer模式吧,相当于MFC的文档视图结构,我认为这种模式比较适合做大的框架,这样数据类、视图类、算法类可以完全分开
离线water_wf

只看该作者 15楼 发表于: 2008-10-17
是观察着模式,可能我没完全理解这个模型,没有觉得数据类和算法类完全分开了
离线netlove

只看该作者 16楼 发表于: 2008-10-20
这几天工作比较忙,还收留了一只流浪猫,回家就忙它了,好几天没上来看,感觉前面几位都算是高手了,所说的都是在实践中的一些很好的经验,给我们这些新手至少指出一条可以借鉴的思路。非常感谢
离线chaoscxm
只看该作者 17楼 发表于: 2008-10-20
引用第13楼water_wf于2008-10-17 08:42发表的  :
设计模式最主要的用途在事务和数据处理,写gui程序,我现在觉得qt model/view模型,数据和gui还是邦的太死,当然比window进步很多,但如果改成其它gtk,wxwidget的话,还是需要很多修改,wxwidget不能流行开的一个原因因为设计模式太死板,数据和程序框架完全绑到一块

现在model里面只能存放文本data,要放置widget还是要使用gui界面,完全分开的话,光分析data的类型就要花费很大一块成本了,未知类型太多。
帖子签名(将在每个帖子下方显示)
离线priestmoon

只看该作者 18楼 发表于: 2008-10-21
最近想写一个扫雷程序,以检测Qt的学习成果。对于算法和界面布局心中略有所得。但就差GUI的一些细节问题还没想明白。这里的各位谈的架构和设计模式我也不太明白,不过我想算法和GUI的分离这一点算是贴点边吧。
扫雷最关键的地方,在我看来就是开局的部分。因为开局的时候,所有地雷的位置和雷数都可以通过算法一次性解决。接下来的过程无非就是按下某个按钮或插个旗标记,把方块“底下”的情况显示出来就行了。
我的想法是:
1. 在算法层用最基本的char[N][N]来作为“地图”,采用广度优先搜索计算并做好标记。
2. 在GUI层画好方块,地雷和数字,并创建显示策略。
3. 建立算法层和GUI层交互的中间层。用于遍历算法层并调用GUI层的相应函数创建策略。

如此一来算法层可以专注于算法。GUI层可以专注于终端的显示。中间层可以管理前两层的交互方式。彼此之间相对独立,可以尽量少受或不受另一方改动的影响。
离线chaoscxm
只看该作者 19楼 发表于: 2008-10-21
引用第18楼priestmoon于2008-10-21 16:51发表的  :
最近想写一个扫雷程序,以检测Qt的学习成果。对于算法和界面布局心中略有所得。但就差GUI的一些细节问题还没想明白。这里的各位谈的架构和设计模式我也不太明白,不过我想算法和GUI的分离这一点算是贴点边吧。
扫雷最关键的地方,在我看来就是开局的部分。因为开局的时候,所有地雷的位置和雷数都可以通过算法一次性解决。接下来的过程无非就是按下某个按钮或插个旗标记,把方块“底下”的情况显示出来就行了。
我的想法是:
1. 在算法层用最基本的char[N][N]来作为“地图”,采用广度优先搜索计算并做好标记。
2. 在GUI层画好方块,地雷和数字,并创建显示策略。
.......

游戏都是这样实现的,不过对于QT的view/model结构来说,除非自己写函数,API函数提供的功能太弱了。
帖子签名(将在每个帖子下方显示)
离线water_wf

只看该作者 20楼 发表于: 2008-10-21
view/mode主要的用处在于一个model可以对多个view,另外游戏中最主要的类(2维)地图管理类,其它都是附属于这个类的包括gui类
离线chaoscxm
只看该作者 21楼 发表于: 2008-10-21
游戏引擎分为几个主要大块,包括核心,图像,逻辑,脚本,工具,资源,地图管理只是逻辑中间的一个分支,其他还有剧情,动作,AI等。图像包括的部分也很多,除了地形渲染之外,还有人物动画渲染,粒子特效,光影渲染,视角管理等各个方面。其实引擎中间哪一个重要,要看制作引擎是为什么服务的,比如FPS类的引擎往往图像渲染是重点,RPG是剧情管理比较重要,SLG则变成AI相对重要了。
帖子签名(将在每个帖子下方显示)
离线water_wf

只看该作者 22楼 发表于: 2008-10-21
晕,我说了2维了,你还fps,啥时候给我切磋一下fps
离线priestmoon

只看该作者 23楼 发表于: 2008-10-24
扫雷的游戏区域(雷区)基本完成。
但有个问题就是:在被橇开的方块之间(不是“表层”的方块之间)如何添加类似网格一样的灰色线条?我对比Windows和Linux下的扫雷,都有这种网格。虽然可以用QPainter硬实现,但这样一来搞到“表层”的方块(按钮)之间就也有分格了。
因为这个问题,觉得自己的仿造很失败。各位有什么好的idea么?
离线water_wf

只看该作者 24楼 发表于: 2008-10-28
如果地图类要有渲染的访问接口,就可以判断那个是被已经打开的啊
快速回复
限100 字节
 
上一个 下一个