• 13578阅读
  • 8回复

VC与Qt结合使用的通用桌面应用程序框架 [复制链接]

上一主题 下一主题
离线kongshanxuel
 

只看楼主 倒序阅读 楼主  发表于: 2014-02-24
— 本帖被 XChinux 设置为精华(2014-03-04) —
这里传不了大附件(8M多点),要看运行程序,请挪步iteye下载:http://cxlh.iteye.com/blog/2019914欢迎吐槽!

开源项目地址:
QQ讨论群群号:101189702
访问淘宝代码托管地址:http://code.taobao.org/
项目svn地址:http://code.taobao.org/p/gqt/src/
设计文档:https://docs.google.com/document/d/1uAEaG832EZ56zQRbMWMjRudJWxRkPEiR08ZtA_dNosU/pub
PPT介绍:https://docs.google.com/presentation/d/1iZxWC1Ki_Ruj6vRxw2Afpp-m_w13OVizwebB47Fxejo/pub?start=false&loop=false&delayms=3000

需注册账号并申请成为项目成员才能访问,因为目前框架还在不断完善中,等全部完善好再全部开放。

Release.rar是目前的demo版本,目前该项目被托管在taobao svn,由于还未完全开发完成,先抛砖引玉,首先谈谈我开发这套框架的初衷:

1)基于各种理由(如考虑招标要求,底层交互便捷,软件门槛,资源占用少等),我们需要一套基于C++的桌面应用程序,但我们不想招聘那么多C++的程序员,因为这个成本太昂贵了,但有很多Java程序员,怎么办?
2)基于C++的桌面应用程序可以更好更通用的与后台应用程序交互,完成request/response以及publish/subscribe模式(需配套的服务端)?
3)我们需要一些C++组件,对于一般的业务界面,我们只需要配置一下组件属性和少量脚本,就能和后台完成交互,完成业务场景(需配套的服务端)
4)不要让我做整个界面和窗口,为什么我不能只做我业务关心的那部分界面?
5)为什么我总在重复造着轮子:难写繁杂的无边界窗口的边线处理,圆角处理,透明处理,日志记录,内存处理,换肤处理,换语言处理等?
6)为什么基于C++的桌面框架程序都这么昂贵,如powerUI等;
7)为什么编写的应用程序随着项目的逐步增加会有崩溃的危险,而且这些crash的问题是那么的不容易被发现?
8)让会写Java的人也能写出优秀的好看的桌面程序吧!

本框架优势:
1.使用本框架开发桌面应用,不会因为项目的逐步庞大而增加程序的不稳定性,所有的模块都是插拔式的(app.xml配置);
2.无需再去处理桌面App繁杂的边框,圆角,透明,容器,进程间通信,日志记录,内存检测等;
3.无需编写C++代码即可生成基于C++的桌面应用程序,这得益于Qt的强大;
4.应用程序前后台可以单独承担编写,避免桌面C++程序往往不熟悉服务端的软肋,将大大提高项目开发速度;
5.框架核心代码量极少,你可以很快的熟悉它并让它保持足够的稳定;

设计原则:
1)桌面框架基于VC(GDI),使得整个框架更加灵活和高效,与第三方整合更加方便;
2)业务dll与框架完全分离:业务工程与GQT框架工程完全独立,使得业务与框架的耦合度很低;
3)业务dll支持Qt编写和XML+Script两种模式,以便根据业务需要进行快速开发;
4) XML驱动
5)脚本支持:框架提供了丰富的脚本库,以便让XML+Script的开发模式更灵活更高校;
6)换肤支持:样式与XML配合,样式有继承关系(类似CSS);
7)多语言支持:基于XML;
8)控件库:为了更好的实现敏捷开发,开发了特有GQT控件库,以便实现更炫更酷更好的界面效果;

实现思路:


实现的QQ登录界面(基于dll载入方式):




扑克牌翻转效果(QML载入方式,来源Qt自带例子):






离线wyseume

只看该作者 1楼 发表于: 2014-02-24
赞一个,期待一下
离线toby520

只看该作者 2楼 发表于: 2014-02-24
很不错,想法很重要,这套思想可以借鉴
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线naturalbest

只看该作者 3楼 发表于: 2014-02-24
非常不错,有过类似的想法,终于看到有志同道合的高手去实现了。
离线kongshanxuel

只看该作者 4楼 发表于: 2014-02-25
已支持QML
离线量子飞跃

只看该作者 5楼 发表于: 2014-03-01
很欣赏,楼主的程序设计思维已经到了一个比较高的高度了,有点跨界大架构师的味道
离线searchcai

只看该作者 6楼 发表于: 2014-03-04
离线thinkbad

只看该作者 7楼 发表于: 2014-03-06
有点过度设计的味道,比直接使用QT或者duilib之类的优势何在? 拐弯抹角病呻吟的感觉
离线hanheyfon

只看该作者 8楼 发表于: 2017-06-23
      
快速回复
限100 字节
 
上一个 下一个