• 20045阅读
  • 24回复

QT皮肤框架-TQUI-最方便使用 [复制链接]

上一主题 下一主题
离线tianyayouge
 

图酷模式  只看楼主 倒序阅读 楼主  发表于: 2015-01-25
关键词: QT皮肤框架
提示说明:看不到贴子图片的,请使用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  框架界面预览
国网绿皮肤
window.open('http://www.qtcn.org/bbs/attachment/Mon_1501/44_100967_b15e069e4c8f9b3.jpg?27');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >

蓝色皮肤


浅蓝色皮肤


灰色皮肤


黑色皮肤



综合示例


颜色选取控件


文件选取控件


消息窗体


文字和数字输入控件

离线tianyayouge

只看该作者 1楼 发表于: 2015-01-25
§1.1.4  皮肤使用说明
特殊窗体示例:
类似QQ的右下角新闻消息弹窗,此窗体可以设置自动关闭的延迟时间


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


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


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


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

离线tianyayouge

只看该作者 2楼 发表于: 2015-01-25
5.  设置全局皮肤样式
5.  设置全局皮肤样式,系统默认自带五种颜色的皮肤,当然开发人员也可以定制自己的整套皮肤颜色


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



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



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



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


5条评分好评度+1贡献值+1金钱+6威望+1
回首追忆 金钱 +1 - 2015-02-18
wuming123057 好评度 +1 好框架。好皮肤。 2015-01-27
wuming123057 贡献值 +1 好框架。好皮肤。 2015-01-27
wuming123057 威望 +1 好框架。好皮肤。 2015-01-27
wuming123057 金钱 +5 好框架。好皮肤。 2015-01-27
离线tianyayouge

只看该作者 3楼 发表于: 2015-01-25
§1.1.5  皮肤框架提供的功能和具体基类
§1.1.5  皮肤框架提供的功能和具体基类
具体请参照TQUI用户手册.chm

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

只看该作者 4楼 发表于: 2015-01-25
§1.1.6.1  所有的基类和帮助类
§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  系统最重要的一个类的说明


离线liudianwu

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


欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线liudianwu

只看该作者 6楼 发表于: 2015-01-25
提点个人看法:有点过度设计的感觉,没必要将各种窗体形式都重新封装一遍吧,呵呵!仅仅是个人看法哈,别介意!
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线tianyayouge

只看该作者 7楼 发表于: 2015-01-25
回 liudianwu 的帖子
liudianwu:提点个人看法:有点过度设计的感觉,没必要将各种窗体形式都重新封装一遍吧,呵呵!仅仅是个人看法哈,别介意! (2015-01-25 16:18) 

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

只看该作者 8楼 发表于: 2015-01-25
免费开源?收费开源?
免费不开源使用?收费不开源使用?
没想过给别人用,只是秀一下?

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

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

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

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

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

只看该作者 11楼 发表于: 2015-01-26
回 liudianwu 的帖子
liudianwu:提点个人看法:有点过度设计的感觉,没必要将各种窗体形式都重新封装一遍吧,呵呵!仅仅是个人看法哈,别介意! (2015-01-25 16:18) 

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

只看该作者 12楼 发表于: 2015-01-26
离线tianyayouge

只看该作者 13楼 发表于: 2015-01-26
回 electri 的帖子
electri:楼主能提供一个购买地址吗? (2015-01-26 09:20) 

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

只看该作者 14楼 发表于: 2015-01-26
回 ysu533 的帖子
ysu533:呵呵, 赞同你的说法. 我在你的那个qss基础上弄了个相类似的插件. 基本已经完成. 只是最近事多未整理. 到时候开源出来.  (2015-01-26 09:41) 

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

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

只看该作者 16楼 发表于: 2015-01-27
好框架。好皮肤。
离线zuohuaijun

只看该作者 17楼 发表于: 2015-01-29
离线fghfghfgh

只看该作者 18楼 发表于: 2015-02-09
支持啊  
离线wyk3104

只看该作者 19楼 发表于: 2021-10-21
非常感谢分享。
离线buyi

只看该作者 20楼 发表于: 2021-10-25
还能下载吗?怎么空空如也了
三人行,必有我师。
离线karlchan0424

只看该作者 21楼 发表于: 2021-11-17
网盘里面被删了,哎,还能分享吗

只看该作者 22楼 发表于: 2022-11-14
还能分享吗?楼主求分享
离线tianyayouge

只看该作者 23楼 发表于: 2023-04-17
TQUI源码:

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

只看该作者 24楼 发表于: 2023-04-17
说明:
下载代码后,需要先修改TQUILib两处代码,去掉日期时间限制,不然运行效果不好。

skinwindowtitlebase.cpp,第15行
skinformhelper.cpp,第22行
快速回复
限100 字节
 
上一个 下一个