Qt之使用CQU库快速开发统一风格界面
在使用Qt开发时,肯定是想让开发的项目界面统一风格;不希望每个界面都要程序员用代码去修饰美化以及进行事件处理等等,这样非常繁琐,容易出错而且没有格调;所以我就开发一个动态链接库,封装统一的风格界面、事件处理等等;自己开发的这个库叫做CQU;
CQU库最终提供给用户的文件只有如下三个文件:
- CQU.dll:动态库文件
- libCQU.a:静态库文件
- cquwidget.h 头文件
先给大家看看效果图,然后再讲述怎么使用CQU动态链接库来达到快速开发的目的
一、效果图
二、CQU外部接口
CQU库提供的外部接口函数如下所示:
static void init();
//设置窗口标题栏文本
void setWidgetTitleText(const QString &str);
//显示隐藏最小化,最大化,关闭按钮
void setWidgetBtnShow(bool bMinBtnShow,bool bMaxBtnShow,bool bCloseBtnShow);
//设置状态栏左标签文本
void setWidgetStatuLeftText(const QString &str);
//设置状态栏左标签图像(会清除原来的文本)
void setWidgetStatuLeftPixmap(const QPixmap &pixmap);
//设置状态栏右标签文本
void setWidgetStatuRightText(const QString &str);
//设置状态栏右标签图像(会清除原来的文本)
void setWidgetStatuRightPixmap(const QPixmap &pixmap);
//设置窗口布局SizeConstraint
void setMainLayoutSizeConstraint(QLayout::SizeConstraint eSizeConstraint);
//设置是否窗口固定大小,不允许拉缩窗口
void setFixSizeBool(bool bFixSizeBool);
//窗口是否将被关闭
bool getClosing();
//窗口当前大小状态
bool getBoolMaxWin();
三、CQU使用演示
这里我创建一个测试工程来演示CQU库的使用
1、使用Qt Creator创建一个GUI工程,工程名字就叫Test吧;把CQU动态库文件(CQU.dll)放到Test工程目录下,把CQU静态库文件(libCQU.a)放到Test工程目录下,同时,把CQU提供的cquwidget.h文件也放到Test工程目录下,得到的目录结构如下图所示:
其中, CQU.dll位于bin目录下,libCQU.a位于lib目录下,cquwidget.h位于工程主目录下
2、编辑Test.pro文件
添加如下两行:
DESTDIR = $$PWD/bin
LIBS += -L$$PWD/lib –lCQU
3、增加窗口
往Test工程里添加一个窗口,这么简单的事情,我就不详细说了;窗口名字叫QCustomFrame类吧,你在这个窗口里随便拖点控件,我拖了些按钮和一些编辑框在窗口上,如下图所示:
这个窗口再普通、朴素不过了吧
4、应用CQU
下面就是使用CQU库来应用你刚才随便创建的窗口,见证奇迹的时刻到了;在main函数里添加如下代码:
QCQUWidget::init();
QCustomFrame *pWidget = new QCustomFrame();
QCQUWidget objCustomBaseWidget(pWidget,true);
objCustomBaseWidget.setWidgetTitleText("CQU Test");
objCustomBaseWidget.setWidgetBtnShow(true,true,true);
objCustomBaseWidget.resize(pWidget->width(),pWidget->height()+HIGHT_MAX);
objCustomBaseWidget.show();
5、最终界面
最后生成的界面如下图所示:
这样方便多了吧;非常容易使用,而且稳定,项目中已使用,呵呵;能够保持整个项目的UI界面风格统一,节省了大量的繁琐工作。
Qt之使用CQU库快速开发统一风格界面的更多相关文章
- DevExpress开发win8风格界面
由于近期在对项目软件界面进行优化,找到了一款效果挺炫的插件,DevExpress15.2,可以制作win8可以滑动图标那个界面的效果,不多说,先贴图: (你没看错,这是用C#winform实现的) 可 ...
- 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发
[原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文 http: ...
- 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0
实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...
- MVC通用控件库展示-MVC4.0+WebAPI+EasyUI+Knockout--SNF快速开发平台3.0
在我们开发中怎么才能提高效率,就是要有大量的公共组件(控件)可以直接使用而不用自己再开发一遍,既然是公共控件那也得简单实用才行.下面就介绍一下SNF-MVC当中的控件库. 总体控件库展示: 1.通用用 ...
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 几十套业务系统集中统一授权管理实现经验分享
由于这几年互联网电商的快速发展,快递公司也进入了快速发展的绝好快速成长期.随着社会的强劲需求公司的业绩年年攀新高.快速发展的公司都需要有强大的IT信息系统,硬件设备基本上款到了货也可以到了,但是软件系 ...
- Sublime插件库新成员基于APICloud快速开发跨平台App
互联网时代强调用户体验,那什么是HTML5跨平台App开发者的编程体验?“不剥夺.不替换开发者喜欢的开发工具,就是人性化的用户体验”,APICloud给出了这样的答案! 重磅发布“多开发工具支持策略” ...
- Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel )
看了不少linux上编译qt的文章,实际上直接通过yum 安装qt是最方便的,请参考<yum安装qt> 不过初步接触fedora,为了了解一下如何在linux上编译.安装开源代码,所以必须 ...
- 关于基于GDAL库QT软件平台下C++语言开发使用说明
背景前提 地理空间数据抽象库(GDAL)是一个用于读取和编写栅格和矢量地理空间数据格式的计算机软件库,由开源地理空间基金会在许可的X / MIT风格免费软件许可下发布. 作为一个库,它为调用应用程序提 ...
- AgileRepository - 一个基于接口的Repository快速开发库
AgileRepository 这是一个可以帮助你快速开发Repository的lib.有点像SpringData JPA根据方法名.注解来自动生成查询方法的功能. 对于一些简单的查询,只需要定义接口 ...
随机推荐
- Java的学习05
今天学习了,Java中的LinkedList类.这个类需要用到链表的知识,以前一直以为,只有c/c++有链表.今天才知道,原来其他语言.也有链表,而且还是双向链表. /** * 自定义一个链表 * @ ...
- Java框架spring Boot学习笔记(一):开始第一个项目
新建一个项目,选择Spring initializr 修改group和项目名 添加依赖包Web,MongoDB 设置保存位置和工程名 新建一个test的文件 输入代码: package com.xxx ...
- MSTP+ VRRP 交换机的 配置过程
配置思路采用以下思路配置: 1.在处于环形网络中的交换设备上配置MSTP基本功能,包括:a.配置MST域并创建多实例,配置VLAN2映射到MSTI1,VLAN3映射到MSTI2,实现流量的负载分担. ...
- 43 【redis cluster】
有两篇文章不错,可以看下: 1,初步理解redis cluster:https://blog.csdn.net/dc_726/article/details/48552531 2,仔细理解redis ...
- FortiGate防火墙对数据包处理流程
1.流程图 2.防火墙对数据包处理过程的各步骤如下: 1)Interface(网卡接口) 网卡接口驱动负责接数收据包,并转交给下一过程. 2)DoS Sensor(DoS防御,默认关闭) 负责过滤SY ...
- related_name和related_query_name举例区别
例1: class UserInfo(models.Model): nickname = models.CharField(max_length=32) username = models.CharF ...
- Django-ConttentType
一 content-type 在django中,有一个记录了项目中所有model元数据的表,就是ContentType,表中一条记录对应着一个存在的model,所以可以通过一个ContentType表 ...
- MFC里面解析json文件格式
CString strTemp; //CString ->string; string stringMsg = (LPCSTR)(CStringA)strTemp; //string -> ...
- cpp 区块链模拟示例(一)工程建立
/* 作 者: itdef 欢迎转帖 请保持文本完整并注明出处 技术博客 http://www.cnblogs.com/itdef/ 技术交流群 群号码:432336863欢迎c c++ window ...
- Monotonic Array LT896
An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...