Qt编写控件属性设计器5-属性中⽂
⼀、前⾔
在上⼀篇⽂章中就提到过,使⽤qtpropertybrowser来加载属性,对应加载到的属性是英⽂的,也就是控件类中Q_PROPERTY描述的变量名称,如何变成中⽂或者其他语⾔显⽰呢?这个就需要研究qtpropertybrowser的源码了,通过研究发现,在QtObjectControllerPrivate 类中负责对控件的属性名称进⾏遍历,然后发送到QtVariantPropertyManager进⾏统⼀的管理,那只要将这⾥的属性名称进⾏映射就⾏了,对应的英⽂到中⽂或者其他语⾔都可以,甚⾄枚举值的下拉框也可以在这⾥换成中⽂的。曾经想过⽤翻译的机制,后⾯发现路很漫长,⽽且最终还是需要映射转换,看过QtDesigner的源码,⾥边最终也是将翻译⽂件中的对应项转换成中⽂的。
⼆、实现的功能
1. ⾃动加载插件⽂件中的所有控件⽣成列表,默认⾃带的控件超过120个。
2. 拖曳到画布⾃动⽣成对应的控件,所见即所得。
3. 右侧中⽂属性栏,改变对应的属性⽴即应⽤到对应选中控件,直观简洁,⾮常适合⼩⽩使⽤。
4. 独创属性栏⽂字翻译映射机制,效率极⾼,可以⾮常⽅便拓展其他语⾔的属性栏。
5. 所有控件的属性⾃动提取并显⽰在右侧属性栏,包括枚举值下拉框等。
6. ⽀持⼿动选择插件⽂件,外部导⼊插件⽂件。
7. 可以将当前画布的所有控件配置信息导出到xml⽂件。
8. 可以⼿动选择xml⽂件打开控件布局,⾃动根据xml⽂件加载控件。
9. 可拉动滑动条、勾选模拟数据复选框、⽂本框输⼊,三种⽅式来⽣成数据应⽤所有控件。
10. 控件⽀持⼋个⽅位拉动调整⼤⼩,⾃适应任意分辨率,可键盘上下左右微调位置。
11. 打通了串⼝采集、⽹络采集、数据库采集三种⽅式设置数据。
12. 代码极其精简,注释⾮常详细,可以作为组态的雏形,⾃⾏拓展更多的功能。
13. 纯Qt编写,⽀持任意Qt版本+任意编译器+任意系统。
三、效果图
四、核⼼代码
#pragma execution_character_set("utf-8")
#include "qtpropertyname.h"
#include "qstringlist.h"
#include "qfile.h"
#include "qdebug.h"
QMap<QString, QString> QtPropertyName::maps = QMap<QString, QString>(); void QtPropertyName::initMap()
{
//从⽂件加载英⽂属性与中⽂属性对照表
QFile file(":/");
if (file.open(QFile::ReadOnly)) {
//QTextStream⽅法读取速度⾄少0%
#if 0
while(!file.atEnd()) {
QString line = adLine();
appendMap(line);
}
#else
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
appendMap(line);
}
浏览器的activex控件#endif
file.close();
}
}
void QtPropertyName::appendMap(const QString &data)
{
QString line = data;
//过滤注释等
if (ains("#") || ains("//")) {
return;
}
line = immed();
line = place("\r", "");
line = place("\n", "");
if (!line.isEmpty()) {
QStringList list = line.split(",");
if (unt() == 2) {
QString key = list.at(0).trimmed();
QString value = list.at(1).trimmed();
//都不能为空
if (!key.isEmpty() && !value.isEmpty()) {
maps.insert(key, value);
}
}
}
}
五、控件介绍
1. 超过150个精美控件,涵盖了各种仪表盘、进度条、进度球、指南针、曲线图、标尺、温度计、导航条、导航栏,flatui、⾼亮按钮、
滑动选择器、农历等。远超qwt集成的控件数量。
2. 每个类都可以独⽴成⼀个单独的控件,零耦合,每个控件⼀个头⽂件和⼀个实现⽂件,不依赖其他⽂件,⽅便单个控件以源码形式集
成到项⽬中,较少代码量。qwt的控件类环环相扣,⾼度耦合,想要使⽤其中⼀个控件,必须包含所有
的代码。
3. 全部纯Qt编写,QWidget+QPainter绘制,⽀持Qt
4.6到Qt
5.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或者so等),可以直接集成到qtcreator中拖曳设计使⽤。
14. ⽬前已经有qml版本,后期会考虑出pyqt版本,如果⽤户需求量很⼤的话。
15. ⾃定义控件插件开放动态库使⽤(永久免费),⽆任何后门和限制,请放⼼使⽤。
16. ⽬前已提供26个版本的dll,其中包括了qt5.12.3 msvc2017 32+64 mingw 32+64 的。
17. 不定期增加控件和完善控件,不定期更新SDK,欢迎各位提出建议,谢谢!
18. Qt⼊门书籍推荐霍亚飞的《Qt Creator快速⼊门》《Qt5编程⼊门》,Qt进阶书籍推荐官⽅的《C++ GUI Qt4编程》。
19. 强烈推荐程序员⾃我修养和规划系列书《⼤话程序员》《程序员的成长课》《解忧程序员》,受益匪浅,受益终⽣!
20. SDK下载链接: 提取码:877p
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论