查看完整版本: [-- QT皮肤框架-TQUI-最方便使用 --]

QTCN开发网 -> Qt 作品展 -> QT皮肤框架-TQUI-最方便使用 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

tianyayouge 2015-01-25 15:00

QT皮肤框架-TQUI-最方便使用

提示说明:看不到贴子图片的,请使用IE浏览器或内核的浏览器查看。

本皮肤框架的相关文档,请在附件中下载,包括测试程序源码,帮助文档。
相关文档可到我的百度网盘中下载,或者在本贴附件中下载。

百度网盘地址:TQUI-V1.0项目说明及测试程序源码


项目更新说明:
-------------------------------------------
版本号        :V1.0.3
更新时间    :2015.1.27
更新内容/实现功能:
1.修改了代码,提高系统健壮性
2.可在qt4及qt5平台上使用
3.编译器适配msvc和mingw,
4.操作系统适配windows和linux
5.增加自定义系统托盘功能
-------------------------------------------





第 一 章  皮肤框架介绍

§1.1.1  框架由来
以前在开发.NET的时候自己做过一套.NET的皮肤框架,使用很方便,效果较好。如今使用QT开发已经有好几年的时间,一直想做一套QT的皮肤框架, 但一直碍于时间和精力等原因无法促成。
近一年来在网上也一直在搜索QT皮肤框架,希望能有人做好可以用的,但搜索的结果有点让人失望,QTCN上有几个伙计公布过自己的界面皮肤设计的效果及源码,但经使用发现都不是很方便,用于QT样式的学习还是不错的,但真正用于工程还差得比较远,原因一是样式设计较为混乱,可复制性不强,二是样式和皮肤未形成模板,无法快速方便开发人员使用。
根据自己多年的经验和积累,决定开发一套QT皮肤框架,命名为TQUI(天涯游阁的QT项目的UI框架),我设计的前提有如下几点:
1. 可定制皮肤,首先是颜色皮肤,之后是图片皮肤,可以实现QQ的聊天窗体的那种效果。
2. 使用简单,不改变现在的QT人员的开发方式,尽可能的与QT的现在的开发机制一致,并很好的融合在一起。
3. 接口简单并完善,提供尽可能丰富的皮肤框架的操作接口(提供一些扩展功能),但接口一定要简单易用。

§1.1.2  框架编译环境
本次发布的TQUI和测试项目,及编译好的可执行程序,编译环境如下:
1.      QT,qt4.8.6,因未使用平台特殊接口,所以可以跨平台使用
2.      VC,vc2010-x86

§1.1.3  框架界面预览
国网绿皮肤
[attachment=13137]

蓝色皮肤
[attachment=13138]

浅蓝色皮肤
[attachment=13139]

灰色皮肤
[attachment=13140]

黑色皮肤
[attachment=13141]


综合示例
[attachment=13163]

颜色选取控件
[attachment=13164]

文件选取控件
[attachment=13165]

消息窗体
[attachment=13166]

文字和数字输入控件
[attachment=13167]

tianyayouge 2015-01-25 15:13
特殊窗体示例:
类似QQ的右下角新闻消息弹窗,此窗体可以设置自动关闭的延迟时间
[attachment=13168]

弹出窗体,此窗体在失去焦点时会自动关闭:
[attachment=13169]

§1.1.4  皮肤使用说明
皮肤框架使用非常简单,以我的测试项目为例来说明。
1.  引入TQUI的库,可以通过代码方式引用,也可以通过动态库方式引用
[attachment=13142]

2.  创建自己的窗体,可以是QMainWindow、QDialog、QWidget的类型,创建步骤与正常的流程一样
3.  修改创建窗体对象后生成的代码,主要是修改继承的类名,其中SkinDialogBase为皮肤框架中的QDialog类型基类,QMainWindow和QWidget的类型的皮肤使用方法与此相同。
[attachment=13143]

4.  修改一下构造函数,只需修改下构造函数中的三处即可让窗体拥有皮肤。
[attachment=13144]

tianyayouge 2015-01-25 15:16
5.  设置全局皮肤样式,系统默认自带五种颜色的皮肤,当然开发人员也可以定制自己的整套皮肤颜色
[attachment=13145]

6.  定制自己的皮肤样式,框架提供了修改皮肤框架的特定 颜色的接口,具体如下
通过调用以下函数设置具体的颜色值
[attachment=13146]


注意,调用以上方法设置颜色值后,请调用以下方法重新加载和刷新皮肤显示效果:
[attachment=13147]


用户可以设置的颜色值如下,具体各颜色的意思可看注释,不清楚的可以自己实际测试就知道了
[attachment=13145]


本皮肤框架可以设置为只应用到标题栏部分,而不影响窗体内的相关控件,效果如下:
[attachment=13149]
[attachment=13150]
[attachment=13151]

tianyayouge 2015-01-25 15:24
§1.1.5  皮肤框架提供的功能和具体基类
具体请参照TQUI用户手册.chm

§1.1.6  重要功能接口简述
TQUI的框架源码中的注释已经较为详细,本节对重要功能进行一下简单描述。

tianyayouge 2015-01-25 15:25
§1.1.6.1  所有的基类和帮助类
[attachment=13152]

§1.1.6.2  所有基类的功能说明
QT原生窗体对象的皮肤封装和实现如下,具体使用接口与原生的使用方法一样:
1.      qcolordialogex.h,提供颜色值选取组件的皮肤框架封装
2.      qfiledialogex.h,提供文件及文件夹选取的皮肤框架封装
3.      qfontdialogex.h,提供字体选择组件的皮肤框架封装
4.      qinputdialogex.h,提供文本、数值输入窗体的皮肤框架封装
5.      qmessageboxex.h,提供消息窗体的皮肤框架封装



开发时需要继承的类:

1.      skindialogbase.h,提供QDialog的皮肤框架
2.      skinwidgetbase.h,提供QWidget的皮肤框架,当然一般不会用这个,因为QWidget理论上不应直接通过弹窗显示。
3.      skinwindowbase.h,提供QMainWindow的皮肤框架,并提供了一个右上角菜单的实现。
4.      skintaskbarnotifierdialogbase.h,提供了一个类似QQ右下角新闻消息窗体的实现蕨类,可实现坐标定位和自动关闭功能,开发人员可根据需要继承此类进行定制和扩展。
5.      skinformframe.h,提供了一个将某QT控件(QWidget子类)进行皮肤化的实现方法,使用,即可以将任何QT的QWidget子类进行皮肤化显示,而不需要继承上面的几个类。


几个功能辅助类:

1.      iconhelper.h,提供了特殊符号显示的帮助类,系统集成了Font Awesome Cheatsheet字符集,可以显示某些特殊符号。
2.      NcFramelessHelper.h,用于实现无边框窗体的缩放、拖动等特效。
3.      skinstylehelper.h,提供皮肤框架的样式操作接口,如设置具体的颜色值,更换皮肤等。

§1.1.6.3  系统最重要的一个类的说明
[attachment=13153]
[attachment=13154]
[attachment=13155]

liudianwu 2015-01-25 16:17
嗯,思路很好,做成了插件的形式。是在我那个开源的代码上演变而来的,帖子地址:http://www.qtcn.org/bbs/read-htm-tid-57229.html 呵呵!不过本人还是喜欢纯QSS实现形式,不喜欢过度封装设计,学习成本太高!而且某些时候对窗体关闭时候的返回值有要求,搞成这种形式可能需要自己重新写代码处理返回值,也许还会增加代码量。其实我开源的这个还存在很多不足之处,希望作者可以一同改进!谢谢!



liudianwu 2015-01-25 16:18
提点个人看法:有点过度设计的感觉,没必要将各种窗体形式都重新封装一遍吧,呵呵!仅仅是个人看法哈,别介意!

tianyayouge 2015-01-25 16:33
liudianwu:提点个人看法:有点过度设计的感觉,没必要将各种窗体形式都重新封装一遍吧,呵呵!仅仅是个人看法哈,别介意! (2015-01-25 16:18) 

这样开发人员用的时候会非常方便,不至于每个窗体都做一遍相同的工作,如设置标题栏,设置界面边框,控制窗体最大化最小化、拖动等繁琐的事情,代码会更加简洁。

diaoxinya 2015-01-25 23:53
免费开源?收费开源?
免费不开源使用?收费不开源使用?
没想过给别人用,只是秀一下?

楼主可以明确一下,让我们知道是要买你的源码呢?还是买你的dll插件?还是不给用就是让大家评论一下?

tianyayouge 2015-01-26 09:17
tianyayouge:这样开发人员用的时候会非常方便,不至于每个窗体都做一遍相同的工作,如设置标题栏,设置界面边框,控制窗体最大化最小化、拖动等繁琐的事情,代码会更加简洁。 (2015-01-25 16:33) 

因为后期我想继续维护并添加更多的封装功能,所以希望得到一些支持,可以买DLL,也可以买源码,这个项目费了我不少精力,项目的代码质量是蛮高的。
我提供的下载地址里有我封装好的动态库和使用方法

electri 2015-01-26 09:20
tianyayouge:因为后期我想继续维护并添加更多的封装功能,所以希望得到一些支持,可以买DLL,也可以买源码,这个项目费了我不少精力,项目的代码质量是蛮高的。
我提供的下载地址里有我封装好的动态库和使用方法 (2015-01-26 09:17) 

楼主能提供一个购买地址吗?

ysu533 2015-01-26 09:41
liudianwu:提点个人看法:有点过度设计的感觉,没必要将各种窗体形式都重新封装一遍吧,呵呵!仅仅是个人看法哈,别介意! (2015-01-25 16:18) 

呵呵, 赞同你的说法. 我在你的那个qss基础上弄了个相类似的插件. 基本已经完成. 只是最近事多未整理. 到时候开源出来.

圣域天子 2015-01-26 09:49

tianyayouge 2015-01-26 11:14
electri:楼主能提供一个购买地址吗? (2015-01-26 09:20) 

我没有网店,可以用支付宝,加我QQ:303194703,以后有什么问题也方便帮你解决。

tianyayouge 2015-01-26 11:16
ysu533:呵呵, 赞同你的说法. 我在你的那个qss基础上弄了个相类似的插件. 基本已经完成. 只是最近事多未整理. 到时候开源出来.  (2015-01-26 09:41) 

如果开发一个项目,界面不多,没必要用我的控件,自己用QSS就可以了,但如果项目的界面比较多(一般都会不少),将基础的共通功能和处理逻辑封装起来是上策。
你可以下载我做的看看接口说明就明白了,这个库做的接口都是开发中会用到的,不存在过度设计,可能我考虑的情况你们遇不到。

tianyayouge 2015-01-27 14:58
项目更新说明:
-------------------------------------------
版本号        :V1.0.3
更新时间    :2015.1.27
更新内容/实现功能:
1.修改了代码,提高系统健壮性
2.可在qt4及qt5平台上使用
3.编译器适配msvc和mingw,
4.操作系统适配windows和linux
5.增加自定义系统托盘功能
-------------------------------------------

wuming123057 2015-01-27 16:06
好框架。好皮肤。

zuohuaijun 2015-01-29 14:28

fghfghfgh 2015-02-09 22:19
支持啊  

wyk3104 2021-10-21 17:42
非常感谢分享。

buyi 2021-10-25 16:33
还能下载吗?怎么空空如也了

karlchan0424 2021-11-17 10:38
网盘里面被删了,哎,还能分享吗

天涯倦客king 2022-11-14 16:46
还能分享吗?楼主求分享

tianyayouge 2023-04-17 18:04
TQUI源码:

链接:https://pan.baidu.com/s/1kAoyYwvadUMAlSv2wblZXg?pwd=1234
提取码:1234

tianyayouge 2023-04-17 18:05
说明:
下载代码后,需要先修改TQUILib两处代码,去掉日期时间限制,不然运行效果不好。

skinwindowtitlebase.cpp,第15行
skinformhelper.cpp,第22行


查看完整版本: [-- QT皮肤框架-TQUI-最方便使用 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled