首页| 论坛| 消息

标题:QT皮肤框架-TQUI-最方便使用
作者:tianyayouge
日期:2015-01-25 15:00
内容:

提示说明:看不到贴子图片的,请使用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框架界面预览
国网绿皮肤


蓝色皮 ..


#1 §1.1.4皮肤使用说明 [tianyayouge 01-25 15:13]
特殊窗体示例:
类似QQ的右下角新闻消息弹窗,此窗体可以设置自动关闭的延迟时间

弹出窗体,此窗体在失去焦点时会自动关闭:

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


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


4.修改一下构造函数,只需修改下构造函数中的三处即可让窗体拥有皮肤。
#2 5.  设置全局皮肤样式 [tianyayouge 01-25 15:16]
5.设置全局皮肤样式,系统默认自带五种颜色的皮肤,当然开发人员也可以定制自己的整套皮肤颜色

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


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


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


本皮肤框架可以设置为只应用到标题栏部分,而不影响窗体内的相关控件,效果如下:
#3 §1.1.5皮肤框架提供的功能和具体基类 [tianyayouge 01-25 15:24]
§1.1.5皮肤框架提供的功能和具体基类
具体请参照TQUI用户手册.chm
§1.1.6重要功能接口简述
TQUI的框架源码中的注释已经较为详细,本节对重要功能进行一下简单描述。
#4 §1.1.6.1所有的基类和帮助类 [tianyayouge 01-25 15:25]
§1.1.6.1所有的基类和帮助类

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

<< 1 2 3 >> (1/5)

回复 发表
主题 版块