在使用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库快速开发统一风格界面的更多相关文章

  1. DevExpress开发win8风格界面

    由于近期在对项目软件界面进行优化,找到了一款效果挺炫的插件,DevExpress15.2,可以制作win8可以滑动图标那个界面的效果,不多说,先贴图: (你没看错,这是用C#winform实现的) 可 ...

  2. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  3. 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0

    实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...

  4. MVC通用控件库展示-MVC4.0+WebAPI+EasyUI+Knockout--SNF快速开发平台3.0

    在我们开发中怎么才能提高效率,就是要有大量的公共组件(控件)可以直接使用而不用自己再开发一遍,既然是公共控件那也得简单实用才行.下面就介绍一下SNF-MVC当中的控件库. 总体控件库展示: 1.通用用 ...

  5. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 几十套业务系统集中统一授权管理实现经验分享

    由于这几年互联网电商的快速发展,快递公司也进入了快速发展的绝好快速成长期.随着社会的强劲需求公司的业绩年年攀新高.快速发展的公司都需要有强大的IT信息系统,硬件设备基本上款到了货也可以到了,但是软件系 ...

  6. Sublime插件库新成员基于APICloud快速开发跨平台App

    互联网时代强调用户体验,那什么是HTML5跨平台App开发者的编程体验?“不剥夺.不替换开发者喜欢的开发工具,就是人性化的用户体验”,APICloud给出了这样的答案! 重磅发布“多开发工具支持策略” ...

  7. 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上编译.安装开源代码,所以必须 ...

  8. 关于基于GDAL库QT软件平台下C++语言开发使用说明

    背景前提 地理空间数据抽象库(GDAL)是一个用于读取和编写栅格和矢量地理空间数据格式的计算机软件库,由开源地理空间基金会在许可的X / MIT风格免费软件许可下发布. 作为一个库,它为调用应用程序提 ...

  9. AgileRepository - 一个基于接口的Repository快速开发库

    AgileRepository 这是一个可以帮助你快速开发Repository的lib.有点像SpringData JPA根据方法名.注解来自动生成查询方法的功能. 对于一些简单的查询,只需要定义接口 ...

随机推荐

  1. Mad Lids游戏 华氏与摄氏温度转换

    name1 = input('请输入一个名字:') name2 = input('请输入一个名字:') vehicle = input('请输入一种车子:') print('\n上近代史的{}刚下课, ...

  2. 无法在正在进行内容生成时调用 StartAt

    刚遇到一个奇怪的问题,用户点击创建销售订单的时候,弹出个 无法在正在进行内容生成时调用 StartAt,查看详细报错. ystem.InvalidOperationException: 无法在正在进行 ...

  3. R语言-散点图进阶

    1.分组散点图 ①xyplot()函数 > library(lattice) > xyplot(mpg~disp, #定义Y~X轴 + data=mtcars, + groups=cyl, ...

  4. 深入浅出PF 学习笔记---TypeConverter

    StringToHumanTypeConverter类(从TypeConverter继承 using System; using System.Collections.Generic; using S ...

  5. django 环境配置.

    1. 一个虚拟环境对应一个 dajngo项目 2. mkvirtruenv pycham 创建Pure Python 新项目,不是Django 2018.3 其他版本 3.  Add Configur ...

  6. 35 【kubernetes】configMap

    kubernetes可以驱动容器的运行,并且把容器的运行放置在kubernetes定义的体系结构中pods这一级. 但是容器运行通常会需要某些参数,比如环境变量或者硬件使用情况. 为了解决对每个con ...

  7. python note 03 切片及对字符串操作

    1.计算 1 - 2 + 3 ... + 99 中除了88以外的数之和 i = 1 sum = 0 while i < 100 : if i == 88 : i = i + 1 continue ...

  8. [leetcode]59. Spiral Matrix II螺旋遍历矩阵2

    Given a positive integer n, generate a square matrix filled with elements from 1 to n^2 in spiral or ...

  9. 现代编译原理--第六章(中间树 IR Tree 含源码)

    (转载请表明出处   http://www.cnblogs.com/BlackWalnut/p/4559717.html ) 这一章,就虎书而言,理论知识点是及其少的,就介绍了为什么要有一个中间表示树 ...

  10. JVM 字节码(二)方法表详解

    JVM 字节码(二)方法表和属性表 上一节中对 ClassFile 的整体进行了五个详细的说明, 本节围绕 ClassFile 最重要的一个内容 - 方法表的 Code 属性展开 ,更多 JVM Me ...