首页| 论坛| 消息

回复: Qt编写一款快速生成 QSettings 代码的应用
#11 回 richards 的帖子 [boylebao 04-29 16:28]
richards:这种外挂软件的方式 还不方便。 可以利用反射的功能 让这部分读取写入自动化 (2020-04-29 14:18) 
反射的方式是什么呢?可以详细说明吗?
#12 回 boylebao 的帖子 [richards 05-24 20:15]
boylebao:反射的方式是什么呢?可以详细说明吗? (2020-04-29 16:28) 
通过反射 比如 QObject 或者QGadget 里面 定义Property 的方式注册成员变量,这些成员变量 可以通过元对象系统去的 变量名称的字符串。也可以通过setproperty 这样的接口 通过字符串名称的方式来改变该变量的值。这样 你可以直接 通过解析字符串 或者 反过来把变量按照字符串名称 和 值的方式导出
请看 setProperty & property
#13 回 richards 的帖子 [boylebao 05-25 11:28]
richards:通过反射 比如 QObject 或者QGadget 里面 定义Property 的方式注册成员变量,这些成员变量 可以通过元对象系统去的 变量名称的字符串。也可以通过setproperty 这样的接口 通过字符串名称的方式来改变该变量的值。这样 你可以直接 通过解析字符串 或者 反过来把变量按照字符串名称 .. (2020-05-24 20:15) 
这个setProperty & property我知道,这种方式只能当临时变量来用吧,如果遇到不是继续QObject的类来说,不能用这种方式的,我这个是针对QSettings 来保存变量值
#14 回 boylebao 的帖子 [richards 05-27 00:08]
boylebao:这个setProperty & property我知道,这种方式只能当临时变量来用吧,如果遇到不是继续QObject的类来说,不能用这种方式的,我这个是针对QSettings 来保存变量值 (2020-05-25 11:28) 
QGadget 也可以有 不绝对是 QObject。配合反射QSetting来读写最终的 文件。再入手 读取QSetting 自动 初始化对应的OBject。 写入的时候把Object 的值 写入到Setting的ini 文档里撒
#15 [richards 05-27 00:14]
QJsonObject BaseConfig::toJsonObject() const
{
QVariantMap map;
const auto metaObject = this->metaObject();
LOG() propertyOffset() propertyCount();
for(int i = metaObject->propertyOffset();
i < metaObject->propertyCount();i++)
{
auto pname = metaObject->property(i).name();
LOG() property(i).typeName();
int index = BaseConfig::staticMetaObject.indexOfEnumerator(tpname);
auto v = BaseConfig::staticMetaObject.enumerator(index).valueToKey(this->property(pname).toInt());
map.insert(pname,v);
}else
map.insert(pname,this->property(pname));
}

return QJsonObject::fromVariantMap(map);
}

void BaseConfig::loadFromJsonObject(const QJsonObject &jobj)
{
QVariantMap map = jobj.toVariantMap();
for(auto p:map.keys())
{
QVariant v = map.value(p);
&n ..

<< 1 2 3 4 >> (3/4)

回复 发表
主题 版块