add bool type support in export json

This commit is contained in:
Siyu.Hong 2021-08-22 19:50:53 +08:00
parent a9f937b493
commit ce60055c2d
3 changed files with 22 additions and 22 deletions

View File

@ -26,7 +26,6 @@
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTreeView * view = new QTreeView;
QJsonModel * model = new QJsonModel;
@ -36,6 +35,7 @@ int main(int argc, char *argv[])
"firstName": "John",
"lastName": "Smith",
"age": 25,
"far-sighted": true,
"address":
{
"streetAddress": "21 2nd Street",
@ -56,8 +56,6 @@ int main(int argc, char *argv[])
]
})";
model->loadJson(QByteArray::fromStdString(json));
view->show();

View File

@ -71,7 +71,7 @@ void QJsonTreeItem::setKey(const QString &key)
mKey = key;
}
void QJsonTreeItem::setValue(const QString &value)
void QJsonTreeItem::setValue(const QVariant &value)
{
mValue = value;
}
@ -86,7 +86,7 @@ QString QJsonTreeItem::key() const
return mKey;
}
QString QJsonTreeItem::value() const
QVariant QJsonTreeItem::value() const
{
return mValue;
}
@ -131,7 +131,7 @@ QJsonTreeItem* QJsonTreeItem::load(const QJsonValue& value, QJsonTreeItem* paren
}
else
{
rootItem->setValue(value.toVariant().toString());
rootItem->setValue(value.toVariant());
rootItem->setType(value.type());
}
@ -239,15 +239,13 @@ QVariant QJsonModel::data(const QModelIndex &index, int role) const
return QString("%1").arg(item->key());
if (index.column() == 1)
return QString("%1").arg(item->value());
return item->value();
} else if (Qt::EditRole == role) {
if (index.column() == 1) {
return QString("%1").arg(item->value());
return item->value();
}
}
return QVariant();
}
@ -258,7 +256,7 @@ bool QJsonModel::setData(const QModelIndex &index, const QVariant &value, int ro
if (Qt::EditRole == role) {
if (col == 1) {
QJsonTreeItem *item = static_cast<QJsonTreeItem*>(index.internalPointer());
item->setValue(value.toString());
item->setValue(value);
emit dataChanged(index, index, {Qt::EditRole});
return true;
}
@ -386,7 +384,18 @@ QJsonValue QJsonModel::genJson(QJsonTreeItem * item) const
}
return arr;
} else {
QJsonValue va(item->value());
QJsonValue va;
switch(item->value().type()){
case QVariant::Bool:
{
va = item->value().toBool();
break;
}
default:
va = item->value().toString();
break;
}
(item->value());
return va;
}

View File

@ -46,26 +46,22 @@ public:
int childCount() const;
int row() const;
void setKey(const QString& key);
void setValue(const QString& value);
void setValue(const QVariant& value);
void setType(const QJsonValue::Type& type);
QString key() const;
QString value() const;
QVariant value() const;
QJsonValue::Type type() const;
static QJsonTreeItem* load(const QJsonValue& value, QJsonTreeItem * parent = 0);
protected:
private:
QString mKey;
QString mValue;
QVariant mValue;
QJsonValue::Type mType;
QList<QJsonTreeItem*> mChilds;
QJsonTreeItem * mParent;
};
//---------------------------------------------------
@ -94,11 +90,8 @@ public:
private:
QJsonValue genJson(QJsonTreeItem *) const;
QJsonTreeItem * mRootItem;
QStringList mHeaders;
};
#endif // QJSONMODEL_H