- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个名为 groupBoxFlags
(JSON 名称:flags
)的 checkable QGroupBox
,它有四个 QCheckBox
将 checkBoxFlag1
命名为 checkBoxFlag4
(JSON 名称:flag1
,...,flag4
) 每个都包含一个 bool 值,用于在我的应用程序中启用特定设置。我想处理多种情况:
groupBoxFlags
未被 选中 - 在 JSON 文档中,flags
将变为 bool 值并将设置为 false
groupBoxFlags
已选中,但所有复选框都未选中 - 与上述情况相同groupBoxFlags
已选中并且至少选中了一个复选框 - 在内部存储一个包含所有复选框值的数组处理这个的代码如下:
QList<bool> flagVals;
flagVals << ui->checkBoxFlag1->isChecked()
<< ui->checkBoxFlag2->isChecked()
<< ui->checkBoxFlag3->isChecked()
<< ui->checkBoxFlag4->isChecked();
// Counter the number of occurences of TRUE
int enabledFlags = flagVals.count(true);
// If flag groupbox is enabled and any of the types of swipe is enabled
if (ui->groupBoxFlags->isChecked() && enabledFlags > 0) {
QJsonObject flag1;
flag1["flag1"] = ui->checkBoxFlag1->isChecked();
// ...
QJsonObject swipeWE;
flag4["flag4"] = ui->checkBoxFlag4->isChecked();
QJsonArray flags = {flag1, ..., flag4};
stateObject["flags"] = flags;
}
else stateObject["flags"] = false;
虽然这没有任何问题,但我看到 Qt 支持用于创建对象和数组的大括号语法(示例取自 here 和 here):
QJsonObject
QJsonObject object
{
{"property1", 1},
{"property2", 2}
};
QJsonArray
QJsonArray array = { 1, 2.2, QString() };
我决定检查一下(与上面的代码相比肯定节省了一些写作)但是我不知道如何做一个一行(可以分布在多行中为了更好的可读性,但必须只有一个分号)。
下面的代码是我得到的:
QJsonObject flag1{{"flag1", ui->checkBoxFlag1->isChecked()}};
// ...
QJsonObject flag4{{"flag4", ui->checkBoxFlag4->isChecked()}};
QJsonArray flags = {flag1, ..., flag4};
stateObject["flags"] = flags;
是否有可能比这个更小?我实际上试过像这样把所有这些放在一起
QJsonArray flags = {
{{"flag1", ui->checkBoxFlag1->isChecked()}},
...
{{"flag4", ui->checkBoxFlag4->isChecked()}}
}; // Error HERE
stateObject["flags"] = flags;
但似乎 QJsonObject
和 QJsonArray
是必需的,因为我得到了错误
/home/user/QtProjects/JsonSaveState/widget.cpp:64: error: conversion from ‘<brace-enclosed initializer list>’ to ‘QJsonValue’ is ambiguous
};
^
当然还有更进一步
stateObject["flags"] = {
{{"flag1", ui->checkBoxFlag1->isChecked()}},
...
{{"flag4", ui->checkBoxFlag4->isChecked()}}
};
也不行。这可能吗?
最佳答案
在 QJsonArray 中使用 QJsonObject:
QJsonArray flags {
QJsonObject{{"flag1", ui->checkBoxFlag1->isChecked()}},
QJsonObject{{"flag4", ui->checkBoxFlag4->isChecked()}}
};
关于c++ - 如何在单行代码中使用大括号语法使用 QJsonObjects 创建 QJsonArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41910739/
如何根据 QJsonArray 的子级之一实现自定义排序? 我有基于此 JSON 的 QJsonArray 玩具: "toys": [ { "type": "teddy",
我有以下 JsonArray 并想通过其“ID”搜索值。这里是存储在 QJsonArray 中的 JSON: { "datasources":[ {"id":1, "name":"tps-
我有以下 JsonArray 并想通过其“ID”搜索值。这里是存储在 QJsonArray 中的 JSON: { "datasources":[ {"id":1, "name":"tps-
我想从 QJsonArray 中删除所有元素,但我遇到的麻烦比我想象的要多得多。这是我的代码: void Assessment::clearQJsonArray(QJsonArray *array)
我像这样向 QJsonObjects 插入很多不同的值: //gender inserted to QJsonObject gender QJsonObject gender; gender.inse
假设我有一个类型的函数: bool sortJson(QJsonArray &); 应该对 QJsonArray 进行排序(并返回真)如果所有成员都是 double .我知道我可以建立一个辅助 QVe
假设我有一个名为 groupBoxFlags(JSON 名称:flags)的 checkable QGroupBox,它有四个 QCheckBox将 checkBoxFlag1 命名为 checkBo
我正在尝试创建一个 json 文件,在其中我将 QjsonObjects 插入到唯一的一个 QJsonArray 中,我得到的是每个 QjsonObject 都在一个独立的 QJsonArray 中,
我有一个对象,我使用下面的代码将它序列化为 JSON(另请参阅结构): struct RegisterItem { RegisterType Type = RegisterType::Read
我正在尝试从 QString 获取数组。 我在网上得到了将字符串转换为 QJsonDocument 的建议,但是,我的数组是空的。 QString string = "\"person\":\"{\"
我有这 2 个变量,我想将数据转换为 dataToString。 QJSonArray data; Qstring dataToString; 数据中有一个巨大的 json,如: { "pro
我正在寻找一个最小的完整的可执行qt或c++代码示例来解析和编写以下Json代码: { "FirstName": "John", "LastName": "Doe", "Mid
目前,我正在遍历一个 vector ,以便将其转换为 QJsonArray: QJsonArray toJson(const std::vector& myVec) { QJsonArray
使用老式循环,我可以深入研究 QJsonArray并且,在下面的示例中,为每个数组项添加元素“foo”以及现有元素“bar”的内容。如何使用基于 C++11 范围的 for 来做到这一点? // QJ
我正在制作支持 Qt TreeView 和 Qt Json 的 Json 格式数据编辑器。我想将 QJsonObject 或 QJsonArray 引用参数传递给函数。 这个有效: void make
我正在使用 Qt5。我正在尝试从 json 对象获取值。这是我试图从中获取数据的 json 对象的样子: { "success": true, "properties": [
我是一名优秀的程序员,十分优秀!