Qt/C++编写超精美自定义控件(历时9年更新迭代/超206个控件/祖传原创)

您所在的位置:网站首页 qt自定义控件子控件自动布局 Qt/C++编写超精美自定义控件(历时9年更新迭代/超206个控件/祖传原创)

Qt/C++编写超精美自定义控件(历时9年更新迭代/超206个控件/祖传原创)

2024-07-16 13:50| 来源: 网络整理| 查看: 265

一、前言

无论是哪一门开发框架,如果涉及到UI这块,肯定需要用到自定义控件,越复杂功能越多的项目,自定义控件的数量就越多,最开始的时候可能每个自定义控件都针对特定的应用场景,甚至里面带了特定的场景的一些设置和处理,随着项目数量的增多,有些控件又专门提取出来共性,做成了通用的自定义控件,意味着控件主要做外观处理,用户根据不同的场景需要,设置不同的外观和规则,就这样搞来搞去搞到现在,已经超过了202个控件,慢慢的积累迭代和更新,历经超过9年的时间不断的完善,尤其是对不同Qt版本、不同编译器、不同操作系统的支持,其中Qt6改动比较大,很多方法或者类改名或者废弃了,需要用类似的方法处理,在改完整个自定义控件大全后,特意整理了升级到Qt6经验大全,放在开源主页上,合并在Qt开发经验中,目前该经验可能是国内Qt开发界最受欢迎的开发经验总结。

公众号:Qt实战,各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发。

公众号:Qt入门和进阶,专门介绍Qt/C++相关知识点学习,帮助Qt开发者更好的深入学习Qt。多位Qt元婴期大神,一步步带你从入门到进阶,走上财务自由之路。

二、效果图

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

三、体验地址 国内站点:https://gitee.com/feiyangqingyun国际站点:https://github.com/feiyangqingyun个人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_quc。 四、功能特点 超过202个精美控件并持续不断迭代更新升级,种类超多,控件类型极其丰富。涵盖了各种仪表盘、进度条、进度球、指南针、曲线图、标尺、温度计、导航条、导航栏,flatui、高亮按钮、滑动选择器、农历、广告轮播、饼状图、环形图、时间轴、拓展控件、增强控件等。每个类都是独立的一个.h头文件和.cpp实现文件组成,零耦合,不依赖其他文件,方便单个控件独立出来以源码形式集成到项目中,方便直观。控件数量远超其他第三方控件库比如qwt集成的控件数量,使用方式也比其简单友好零耦合。支持任意Qt版本,亲测Qt4/5/6的所有版本,全部纯Qt编写,QWidget+QPainter绘制。支持任意编译器,包括但不限于mingw、msvc、gcc、clang等编译器。支持任意操作系统,包括但不限于windows、linux、mac、android、uos、银河麒麟、各种国产linux、嵌入式linux、树莓派、香橙派、全志H3等。支持编译生成设计师插件,可直接集成到QtCreator的控件栏中,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。支持编译生成独立的非插件形式的动态库文件,体积小,比如嵌入式linux不支持designer只需要动态库的形式。每个控件都有一个单独的完整的使用demo,方便参考学习单个控件使用,非常适合初学者。提供一个所有控件使用的集成的example,方便快速查看所有控件的效果。支持直接源码集成到example的方式,方便编译到安卓,for web套件等。支持编译成wasm文件,直接网页运行,可以在谷歌、火狐、edge等浏览器运行,原生性能。每个控件的源代码都有详细中文注释,都按照统一设计规范编写,方便学习自定义控件的编写。每个控件都内置默认配色,demo对应的配色都非常精美。部分控件提供多种样式风格选择,多种指示器样式选择。所有控件自适应布局和窗体拉伸变化,自动缩放。配套额外的自定义控件属性设计器,类似组态设计器,纯中文属性名称,支持拖曳设计,所见即所得,支持导入导出xml格式。集成fontawesome图形字体+阿里巴巴iconfont收藏的几百个图形字体,享受图形字体带来的乐趣。所有控件最后生成一个dll动态库文件,可以直接集成到qtcreator中拖曳设计使用。控件源码全部分门别类存放,pri模块形式集成,提供控件对照表快速查找对应控件和说明。 五、相关代码 #pragma execution_character_set("utf-8") #include "frmexamplessimple.h" #include "ui_frmexamplessimple.h" #include "head.h" #include "../../demo/gauge/gaugecar/frmgaugecar.h" #include "../../demo/gauge/gaugecloud/frmgaugecloud.h" #include "../../demo/gauge/gaugecolor/frmgaugecolor.h" #include "../../demo/gauge/gaugecompass/frmgaugecompass.h" #include "../../demo/gauge/gaugecompasspan/frmgaugecompasspan.h" #include "../../demo/gauge/gaugedial/frmgaugedial.h" #include "../../demo/gauge/gaugemini/frmgaugemini.h" #include "../../demo/gauge/gaugepanel/frmgaugepanel.h" #include "../../demo/gauge/gaugeprogress/frmgaugeprogress.h" #include "../../demo/gauge/gaugespeed/frmgaugespeed.h" #include "../../demo/progress/progressbutton/frmprogressbutton.h" #include "../../demo/progress/progresspercent/frmprogresspercent.h" #include "../../demo/progress/progressring/frmprogressring.h" #include "../../demo/progress/progressshadow/frmprogressshadow.h" #include "../../demo/progress/progresstip/frmprogresstip.h" #include "../../demo/painter/battery/frmbattery.h" #include "../../demo/painter/lightbutton/frmlightbutton.h" #include "../../demo/painter/lunarcalendarwidget/frmlunarcalendarwidget.h" #include "../../demo/painter/magicpoolfish/frmmagicpoolfish.h" #include "../../demo/painter/telwidget/frmtelwidget.h" #include "../../demo/custom/customring/frmcustomring.h" #include "../../demo/custom/customgraphics/frmcustomgraphics.h" #include "../../demo/custom/shadowcalendar/frmshadowcalendar.h" #include "../../demo/custom/spiderchart/frmspiderchart.h" #include "../../demo/custom/timeaxis/frmtimeaxis.h" #include "../../demo/custom/customdart/frmcustomdart.h" #include "../../demo/custom/tasktableview/frmtasktableview.h" #include "../../demo/ruler/rulerprogress/frmrulerprogress.h" #include "../../demo/color/colorpanel/frmcolorpanel.h" #include "../../demo/image/adswidgetx/frmadswidgetx.h" #include "../../demo/image/imageclock/frmimageclock.h" #include "../../demo/other/selectwidget/frmselectwidget.h" #include "../../demo/wave/wavewater/frmwavewater.h" #include "../../demo/slider/sliderselect/frmsliderselect.h" #include "../../demo/flight/frmflightall.h" frmExamplesSimple::frmExamplesSimple(QWidget *parent) : QWidget(parent), ui(new Ui::frmExamplesSimple) { ui->setupUi(this); this->initForm(); this->addItem(); } frmExamplesSimple::~frmExamplesSimple() { delete ui; } void frmExamplesSimple::paintEvent(QPaintEvent *) { QPainter painter(this); painter.drawTiledPixmap(rect(), bgPix); } void frmExamplesSimple::initForm() { bgPix = QPixmap(":/image/bg.png"); connect(ui->navListView, SIGNAL(pressed(QString, QString)), this, SLOT(pressed(QString, QString))); //设置文本边距 ui->navListView->setChildMargin(28); ui->navListView->setFixedWidth(190); ui->navListView->setExpendMode(NavListView::ExpendMode_SingleClick); ui->navListView->setSeparateColor(QColor(40, 43, 51)); //设置子节点颜色 ui->navListView->setChildBgNormalColor(QColor(40, 43, 51)); ui->navListView->setChildBgSelectedColor(QColor(20, 20, 20)); ui->navListView->setChildBgHoverColor(QColor(20, 20, 20)); ui->navListView->setChildTextNormalColor(QColor(180, 180, 180)); ui->navListView->setChildTextSelectedColor(QColor(250, 250, 250)); ui->navListView->setChildTextHoverColor(QColor(255, 255, 255)); //设置父节点颜色 ui->navListView->setParentBgNormalColor(QColor(57, 61, 73)); ui->navListView->setParentBgSelectedColor(QColor(78, 83, 102)); ui->navListView->setParentBgHoverColor(QColor(78, 83, 102)); ui->navListView->setParentTextNormalColor(QColor(250, 250, 250)); ui->navListView->setParentTextSelectedColor(QColor(250, 250, 250)); ui->navListView->setParentTextHoverColor(QColor(250, 250, 250)); } void frmExamplesSimple::addItem() { ui->stackedWidget->addWidget(new frmGaugeCar); ui->stackedWidget->addWidget(new frmGaugeCloud); ui->stackedWidget->addWidget(new frmGaugeColor); ui->stackedWidget->addWidget(new frmGaugeCompass); ui->stackedWidget->addWidget(new frmGaugeCompassPan); ui->stackedWidget->addWidget(new frmGaugeDial); ui->stackedWidget->addWidget(new frmGaugeMini); ui->stackedWidget->addWidget(new frmGaugePanel); ui->stackedWidget->addWidget(new frmGaugeProgress); ui->stackedWidget->addWidget(new frmGaugeSpeed); ui->stackedWidget->addWidget(new frmProgressButton); ui->stackedWidget->addWidget(new frmProgressPercent); ui->stackedWidget->addWidget(new frmProgressRing); ui->stackedWidget->addWidget(new frmProgressShadow); ui->stackedWidget->addWidget(new frmProgressTip); ui->stackedWidget->addWidget(new frmBattery); ui->stackedWidget->addWidget(new frmLightButton); ui->stackedWidget->addWidget(new frmLunarCalendarWidget); ui->stackedWidget->addWidget(new frmMagicPoolFish); ui->stackedWidget->addWidget(new frmTelWidget); ui->stackedWidget->addWidget(new frmCustomRing); ui->stackedWidget->addWidget(new frmCustomGraphics); ui->stackedWidget->addWidget(new frmShadowCalendar); ui->stackedWidget->addWidget(new frmSpiderChart); ui->stackedWidget->addWidget(new frmTimeAxis); ui->stackedWidget->addWidget(new frmCustomDart); ui->stackedWidget->addWidget(new frmTaskTableView); ui->stackedWidget->addWidget(new frmRulerProgress); ui->stackedWidget->addWidget(new frmColorPanel); ui->stackedWidget->addWidget(new frmAdsWidgetx); ui->stackedWidget->addWidget(new frmImageClock); ui->stackedWidget->addWidget(new frmSelectWidget); ui->stackedWidget->addWidget(new frmWaveWater); ui->stackedWidget->addWidget(new frmSliderSelect); ui->stackedWidget->addWidget(new frmFlightAll); listName


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3