qt 加载控件慢_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版本+任意编译器+任意系统。

三、效果图

f010d8d498dd04d850c040128fab7609.gif

四、核心代码

#pragma execution_character_set("utf-8")#include "qtpropertyname.h"#include "qstringlist.h"#include "qfile.h"#include "qdebug.h"QMap QtPropertyName::maps = QMap();void QtPropertyName::initMap(){ //从文件加载英文属性与中文属性对照表 QFile file(":/propertyname.txt"); if (file.open(QFile::ReadOnly)) { //QTextStream方法读取速度至少快30%#if 0 while(!file.atEnd()) { QString line = file.readLine(); appendMap(line); }#else QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); appendMap(line); }#endif file.close(); }}void QtPropertyName::appendMap(const QString &data){ QString line = data; //过滤注释等 if (line.contains("#") || line.contains("//")) { return; } line = line.trimmed(); line = line.replace(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值