一、前言

平铺背景控件,主要的应用场景是作为画布出现,黑白相间的背景图,然后上面可以放置图片图形等,使得看起来更美观,比如PS软件新建图层以后的背景,FireWorks软件新建画布以后的透明背景,ICO制作软件新建画布以后的背景,都会采用一个黑白相间的背景。尽管本人用QPainter很多年,后面在翻阅QPainter自带的函数中才发现居然QPainter自带了这个绘制平铺背景的函数,擦,他么叫drawTiledPixmap,Qt不愧是跨平台GUI开发中的佼佼者,这些东西居然都考虑到了,说到考虑的周到,Qt中连size和count和length都完美的封装了,适合不同人群的使用习惯,这个考虑也是非常周到的。drawTiledPixmap就两个参数,第一个参数是要绘制的区域,第二个参数是要绘制的图片,图片不足会自动拷贝填充,所以如果提供的是两个交替颜色的背景图片,就会依次绘制形成平铺背景的效果,为了使得颜色可以控制,本控件增加了交替颜色的设置,可以自行传入两种颜色作为交替颜色,在程序内部自动生成要绘制的图片。

二、实现的功能

* 1:可设置交替背景颜色

三、效果图

四、完整代码

#pragma execution_character_set("utf-8")

#include "tiledbg.h"

#include "qpainter.h"

#include "qdebug.h"

TiledBg::TiledBg(QWidget *parent) : QWidget(parent)

{

color1 = QColor(255, 255, 255);

color2 = QColor(220, 220, 220);

bgPix = QPixmap(64, 64);

drawBg();

}

void TiledBg::drawBg()

{

bgPix.fill(color1);

QPainter painter(&bgPix);

painter.fillRect(0, 0, 32, 32, color2);

painter.fillRect(32, 32, 32, 32, color2);

painter.end();

update();

}

void TiledBg::paintEvent(QPaintEvent *)

{

QPainter painter(this);

painter.drawTiledPixmap(this->rect(), bgPix);

}

QColor TiledBg::getColor1() const

{

return this->color1;

}

QColor TiledBg::getColor2() const

{

return this->color2;

}

QPixmap TiledBg::getBgPix() const

{

return this->bgPix;

}

QSize TiledBg::sizeHint() const

{

return QSize(100,100);

}

QSize TiledBg::minimumSizeHint() const

{

return QSize(20,20);

}

void TiledBg::setColor1(const QColor &color1)

{

if (this->color1 != color1) {

this->color1 = color1;

drawBg();

}

}

void TiledBg::setColor2(const QColor &color2)

{

if (this->color2 != color2) {

this->color2 = color2;

drawBg();

}

}

void TiledBg::setBgPix(const QPixmap &bgPix)

{

this->bgPix = bgPix;

update();

}

六、控件介绍

1. 超过149个精美控件,涵盖了各种仪表盘、进度条、进度球、指南针、曲线图、标尺、温度计、导航条、导航栏,flatui、高亮按钮、滑动选择器、农历等。远超qwt集成的控件数量。

2. 每个类都可以独立成一个单独的控件,零耦合,每个控件一个头文件和一个实现文件,不依赖其他文件,方便单个控件以源码形式集成到项目中,较少代码量。qwt的控件类环环相扣,高度耦合,想要使用其中一个控件,必须包含所有的代码。

3. 全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式linux等,不乱码,可直接集成到Qt Creator中,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。

4. 每个控件都有一个对应的单独的包含该控件源码的DEMO,方便参考使用。同时还提供一个所有控件使用的集成的DEMO。

5. 每个控件的源代码都有详细中文注释,都按照统一设计规范编写,方便学习自定义控件的编写。

6. 每个控件默认配色和demo对应的配色都非常精美。

7. 超过130个可见控件,6个不可见控件。

8. 部分控件提供多种样式风格选择,多种指示器样式选择。

9. 所有控件自适应窗体拉伸变化。

10. 集成自定义控件属性设计器,支持拖曳设计,所见即所得,支持导入导出xml格式。

11. 自带activex控件demo,所有控件可以直接运行在ie浏览器中。

12. 集成fontawesome图形字体+阿里巴巴iconfont收藏的几百个图形字体,享受图形字体带来的乐趣。

13. 所有控件最后生成一个dll动态库文件,可以直接集成到qtcreator中拖曳设计使用。

14. 目前已经有qml版本,后期会考虑出pyqt版本,如果用户需求量很大的话。

dll封装成activex控件_Qt编写自定义控件26-平铺背景控件相关推荐

  1. 轮播高度_Qt编写自定义控件24-图片轮播控件

    一.前言 上一篇文章写的广告轮播控件,采用的传统widget堆积设置样式表做的,这次必须要用到更高级的QPainter来绘制了,这个才是最高效的办法,本控件参考雨田哥的轮播控件,经过大规模的改造而成, ...

  2. qml 时间控件_Qt编写自定义控件54-时钟仪表盘

    一.前言 这个控件没有太多的应用场景,主要就是练手,论美观的话比不上之前发过的一个图片时钟控件,所以此控件也是作为一个基础的绘制demo出现在Qt源码中,我们可以在Qt的安装目录下找到一个时钟控件的绘 ...

  3. qt qss设置字体大小_Qt编写自定义控件70-扁平化flatui

    一.前言 对于现在做前端开发人员来说,FlatUI肯定不陌生,最近几年扁平化的设计越来越流行,大概由于现在PC端和移动端的设备的分辨率越来越高,扁平化反而看起来更让人愉悦,而通过渐变色产生的质感色彩反 ...

  4. qt 背景和控件布局_Qt编写自定义控件26-平铺背景控件

    一.前言 平铺背景控件,主要的应用场景是作为画布出现,黑白相间的背景图,然后上面可以放置图片图形等,使得看起来更美观,比如PS软件新建图层以后的背景,FireWorks软件新建画布以后的透明背景,IC ...

  5. datetimepicker控件怎么改变hover颜色_Qt编写自定义控件9-导航按钮控件

    前言 导航按钮控件,主要用于各种漂亮精美的导航条,我们经常在web中看到导航条都非常精美,都是html+css+js实现的,还自带动画过度效果,Qt提供的qss其实也是无敌的,支持基本上所有的CSS2 ...

  6. qt文件选择控件_Qt编写的项目作品2-控件属性设计器(组态)

    一.功能特点 自动加载插件文件中的所有控件生成列表,默认自带的控件超过120个. 拖曳到画布自动生成对应的控件,所见即所得. 右侧中文属性栏,改变对应的属性立即应用到对应选中控件,直观简洁,非常适合小 ...

  7. 文字居中 qt_Qt编写自定义控件11-设备防区按钮控件

    前言 在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜色指 ...

  8. qt获取当前系统音量值_Qt编写自定义控件50-迷你仪表盘

    一.前言 这个控件取名叫迷你仪表盘,是以为该控件可以缩小到很小很小的区域显示,非常适合小面积区域展示仪表数据使用,还可以手动触摸调节进度,是我个人觉得最漂亮小巧的一个控件.初次看到类似的控件是在一个音 ...

  9. qt更改类名_Qt编写自定义控件属性设计器

    以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用场景需 ...

  10. qt动画效果_Qt编写自定义控件44-天气仪表盘

    一.前言 天气仪表盘控件是所有控件中唯一一个使用了svg矢量图的控件,各种天气图标采用的矢量图,颜色变换采用动态载入svg的内容更改生成的,其实也可以采用图形字体来做,本次控件为了熟悉下svg在Qt中 ...

最新文章

  1. 华为新系统鸿蒙升级平板名单,华为鸿蒙系统升级名单正式确认!全面替换安卓:流畅度比肩iOS...
  2. python实现简单的api接口-对Python实现简单的API接口实例讲解
  3. SQL Server-表表达式基础回顾(二十四)
  4. Linux的tomcat日志分割,linux下tomcat日志分割
  5. Sonar插件的安装与使用详解
  6. 2021Java笔试题总结!三星java经典手机游戏
  7. 「深度」详解Uber自动驾驶汽车传感器系统,什么样的配置才能避免撞人事件!...
  8. 第二人生的源码分析(9)登录界面显示
  9. java日志脱敏_java 日志脱敏框架 sensitive,优雅的打印脱敏日志
  10. app抓包于appium爬取数据
  11. 面试经历(某大型机器人少儿编程培训机构)
  12. 【imessage群发苹果推信】[iMessageSuspic](Apple推送服务)使用信息推送服务
  13. HCNR200和HCNR201在电机驱动和电流回路中的应用
  14. 量子计算机核心技术突破,量子芯片研发有突破 我们距离量子计算机不远了
  15. thinkphp5oa管理系统
  16. MySQL的基本知识点,一千行命令概括
  17. pandas 字符串切片后保存_pandas:快速处理字符串方法
  18. 小米平板安装linux系统版本,ubuntu(linux)占领小米平板2(mipad2)
  19. 2D游戏开发 - 配置SkyGameEngine2d环境
  20. 解决MySQL报错2003-Can not connet to MySQL server

热门文章

  1. 最近的shell脚本(updating)
  2. 查询工商单位注册信息 平台
  3. Repeater思路整理
  4. 成都阿里技术一面后感,给广大码友的一些小建议
  5. 腾讯2018春招笔试题,翻转数列
  6. String类的trim() 方法
  7. Java编程基础03——进制运算数据类型变量
  8. js弹窗 js弹出DIV,并使整个页面背景变暗
  9. Nero Burning Rom v7.2.3.2b 简体中文版
  10. (转)log4j(二)——如何控制日志信息的输出?