自动采集编写(提下一个牛逼的技巧:独创属性栏文字翻译机制)
优采云 发布时间: 2022-04-04 03:04自动采集编写(提下一个牛逼的技巧:独创属性栏文字翻译机制)
一、前言
前面说过,Qt的属性机制太强大了,这次的动态属性功能就是要让它爆炸。很难想象widget->setProperty("value", value) 只需要一行代码就可以完成;没错,就是这么简单,调用弱属性机制,可以直接控制控件中的所有属性,设计这个机制的人绝对是天才,直接跪了。至于具体的底层是如何实现的,这个可以忽略,也没有太多精力去研究Qt的源码。源代码非常大。研究源码最快的方法是直接搜索和定位对应的文件。除了提供文本框输入值来动态改变控件属性,这个设计器还提供了滑块,
这里不得不提下一个牛逼的技巧:QLabel有三种设置文字的方式,掌握Qt的属性系统,从一个案例推断别人,可以做出很多效果。
ui->label->setStyleSheet("qproperty-text:hello;");
ui->label->setProperty("text", "hello");
ui->label->setText("hello");
体验地址:
二、实现的功能自动加载插件文件中的所有控件生成列表,默认内置控件超过120个。拖到画布上自动生成对应的控件,所见即所得你得到。在右侧的中文属性栏中,更改对应的属性立即应用到对应的选中控件,直观简洁,非常适合小白使用。独创的属性栏文本翻译映射机制非常高效,可以很方便的扩展其他语言的属性栏。自动提取所有控件的属性并显示在右侧属性栏上,包括枚举值下拉框。支持手动选择插件文件和外部导入插件文件。当前画布的所有控制配置信息都可以导出为一个xml文件。可以手动选择xml文件打开控件布局,根据xml文件自动加载控件。通过拉动滑块、选中模拟数据复选框并输入文本框,可以通过三种方式生成数据并应用所有控件。该控件支持八个方向的拉动和调整大小,适应任意分辨率,并可微调键盘的上下左右位置。开放了串口采集、网络采集、数据库采集三种方式设置数据。代码非常简洁,注释也很详细。可以作为配置的原型,自行扩展更*敏*感*词*。用纯 Qt 编写,它支持任何 Qt 版本 + 任何编译器 + 任何系统。三、渲染
四、核心代码
void frmMain::initForm()
{
//初始化中英属性对照表
QtPropertyName::initMap();
//设置没有关闭按钮
ui->dockWidgetControl->setFixedWidth(200);
ui->dockWidgetData->setFixedWidth(200);
ui->dockWidgetProperty->setFixedWidth(220);
ui->dockWidgetControl->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
ui->dockWidgetProperty->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
ui->dockWidgetData->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
this->tabifyDockWidget(ui->dockWidgetControl, ui->dockWidgetData);
ui->dockWidgetControl->raise();
//绑定数据源窗体的数值改变信号
connect(ui->dockWidgetContentsData, SIGNAL(valueChanged(int)), this, SLOT(valueChanged(int)));
//允许拖曳接收
this->setAcceptDrops(true);
bgPix = QPixmap(":/image/bg.png");
//居中显示窗体
int frmX = this->width();
int frmY = this->height();
QDesktopWidget w;
int deskWidth = w.availableGeometry().width();
int deskHeight = w.availableGeometry().height();
QPoint movePoint(deskWidth / 2 - frmX / 2, deskHeight / 2 - frmY / 2);
this->move(movePoint);
//初始化随机数*敏*感*词*
QTime t = QTime::currentTime();
qsrand(t.msec() + t.second() * 1000);
//定时器模拟随机值赋值给控件
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(setValue()));
timer->setInterval(2000);
}
void frmMain::setValue()
{
int value = qrand() % 100;
valueChanged(value);
}
void frmMain::valueChanged(int value)
{
QList widgets = ui->centralwidget->findChildren();
foreach (QWidget *widget, widgets) {
widget->setProperty("value", value);
}
}
五、控件介绍 150多个精美控件,涵盖各种仪表板、进度条、进度球、指南针、图形、标尺、温度计、导航条、导航条、flatui、高亮按钮、滑动选择器、农历等。远远超过qwt集成的控件数量。每个类都可以独立成单独的控件,零耦合,每个控件都有头文件和实现文件,不依赖其他文件,方便单个控件以源代码的形式集成到项目中,代码量少。qwt 的控制类是互锁和高度耦合的。如果要使用其中一个控件,则必须收录所有代码。全部纯Qt编写,QWidget+QPainter绘图,支持Qt4.6到Qt<任意Qt版本 @5.12,支持mingw、msvc、gcc等编译器,支持windows+linux+Mac+embedded linux等任意操作系统,无乱码,可以直接集成到Qt Creator中,像内置的一样使用在控件中。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。12、支持mingw、msvc、gcc等编译器,支持windows+linux+Mac+embedded linux等任意操作系统,无乱码,可直接集成到Qt Creator中,像内置控件一样使用。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。12、支持mingw、msvc、gcc等编译器,支持windows+linux+Mac+embedded linux等任意操作系统,无乱码,可直接集成到Qt Creator中,像内置控件一样使用。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。支持mingw、msvc、gcc等编译器,支持windows+linux+Mac+embedded linux等任意操作系统,无乱码,可直接集成到Qt Creator中,像内置控件一样使用。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。支持mingw、msvc、gcc等编译器,支持windows+linux+Mac+embedded linux等任意操作系统,无乱码,可直接集成到Qt Creator中,像内置控件一样使用。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。gcc等编译器,支持windows+linux+Mac+嵌入式linux等任何操作系统,无乱码,可以直接集成到Qt Creator中,像内置控件一样使用。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。gcc等编译器,支持windows+linux+Mac+嵌入式linux等任何操作系统,无乱码,可以直接集成到Qt Creator中,像内置控件一样使用。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。支持windows+linux+Mac+嵌入式linux等任意操作系统,无乱码,可直接集成到Qt Creator中,像内置控件一样使用。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。支持windows+linux+Mac+嵌入式linux等任意操作系统,无乱码,可直接集成到Qt Creator中,像内置控件一样使用。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。没有乱码,可以直接集成到Qt Creator中,像内置控件一样使用。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。没有乱码,可以直接集成到Qt Creator中,像内置控件一样使用。大多数效果只需要设置几个属性,非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。这非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。这非常方便。每个控件都有对应的单独的DEMO收录控件的源代码,方便参考和使用。它还提供了一个集成的 DEMO,供所有控件使用。每个控件的源码都有详细的中文注释,按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。按照统一的设计规范编写,方便学习自定义控件的编写。每个控件的默认颜色和demo对应的颜色都非常漂亮。超过 130 个可见控件,6 个不可见控件。
<p>一些控件提供了多种样式可供选择,还有多种指示器样式可供选择。所有控件都适应表格拉伸变化。集成自定义控件属性设计器,支持拖放设计,所见即所得,支持xml格式导入导出。自带activex控件demo,所有控件都可以直接在ie浏览器中运行。整合fontawesome图形字体+阿里巴巴iconfont采集的数百种图形字体,享受图形字体带来的乐趣。所有控件最后生成一个动态库文件(dll左右等),可以直接集成到qtcreator中进行拖拽设计。已经有qml版本,以后会考虑pyqt版本,如果用户需求大的话。自定义控件插件开放使用动态库(永久免费),没有任何后门和限制,请放心使用。目前已经提供了26个版本的dll,包括qt