小编p.i*_*.g.的帖子

使用rapidjson迭代并检索JSON中的嵌套对象

我正在解析一个JSON类似如下的结构

{
    "item1" : "value1"
    "item2" : "value2"
    // ...
    "itemn" : {
        "outernestedItem1" : {
            "innerNestedItem1" : "valuen1"
            "innerNestedItem2" : "valuen2"
        }
        // ....
        "outernestedItemn" : {
            "innerNestedItem1" : "valuen1"
            "innerNestedItem2" : "valuen2"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

外部嵌套项的数量不固定,所以我使用来自rapidjson的迭代器进行迭代,内部嵌套对象变量是固定的,所以我可以使用[]来访问它们.

const rapidjson::Value& itemn = document["itemn"];
for (rapidjson::Value::ConstMemberIterator itr = itemn.MemberBegin();
itr != itemn.MemberEnd(); ++itr)
{
    rapidjson::StringBuffer sb;
    rapidjson::Writer<rapidjson::StringBuffer> writer( sb );
    itr->value.Accept(writer);

    std::cout << sb["innerNestedItem1"].GetString();
    std::cout << sb["innerNestedItem2"].GetString();
}
Run Code Online (Sandbox Code Playgroud)

但是sb(字符串缓冲区)不允许[],任何想法我怎么能这样做?

编辑1:我以非常低效的方式做到了,但只是共享解决方案,所以它可能有助于某人提出有效的解决方案.

const rapidjson::Value& itemn = document["itemn"];
for (rapidjson::Value::ConstMemberIterator itr = …
Run Code Online (Sandbox Code Playgroud)

c++ json rapidjson

6
推荐指数
2
解决办法
2万
查看次数

C++ Qt返回空QString

我做了一个返回a的函数QString.在我的函数中的某些点它应该返回一个空的QString.

刚回来""不起作用.当我使用QString::isEmpty()它时不是.我的"应急计划"是返回一个"空"字符串并检查文本是否为"空".但我不认为那是好风格.

那我怎么回空QString

c++ qstring qt

5
推荐指数
1
解决办法
8943
查看次数

QPainter DrawImage 居中对齐

有什么办法可以在QPainter居中对齐的情况下绘制图像吗?我看到QPainter::drawText给了我们这个规定,但drawImage没有。我有一个源矩形、目标矩形和一个图像。当源尺寸很小时,图像会被绘制在页面的左侧。我希望它打印居中对齐。

qt qpainter

5
推荐指数
2
解决办法
7558
查看次数

将一个点传递给一个函数

在这个程序中,我创建了两个指针(a,b),指向x和y的内存地址.在我创建的函数中,它应该交换a和b的内存地址(So b = a和a = b).当我编译它时给我一个错误(从'int'到'int*'的无效转换)这是什么意思?我正在传递一个指向该函数的指针,还是将其作为常规int读取?

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
void pointer(int* x,int* y)// Swaps the memory address to a,b
{
    int *c;
    *c = *x;
    *x = *y;
    *y = *c;
}

int main()
{
    int x,y;
    int* a = &x;
    int* b = &y;
    cout<< "Adress of a: "<<a<<" Adress of b: "<<b<<endl; // Display both memory address

    pointer(*a,*b);
    cout<< "Adress of a: "<<a<<" Adress of b: "<<b<<endl; // Displays the swap of memory …
Run Code Online (Sandbox Code Playgroud)

c++ pointers

5
推荐指数
1
解决办法
131
查看次数

QPainter宽度和高度

有没有机会找出尺寸QPainter?我QPainter用于绘制移动应用程序的整个图形界面.问题是某些应用程序覆盖窗口的菜单,每个设备的大小都不同,因此几乎不可能!有没有可能做到而不是知道QPainter尺寸?

编辑:简单width()height()有效!

mobile qt symbian maemo qpainter

4
推荐指数
1
解决办法
3505
查看次数

C++/Qt编码风格 - #define定义在哪里

我正试图建立一个突破性的游戏克隆Qt.我需要弄清楚QGraphicsItem我的球碰撞的类型.例如,如果我将球与墙碰撞,球就会反弹,如果它与砖碰撞,它必须反弹并摧毁砖.为了找出QGraphicsItem它是什么类型,我认为最好的方法可能是覆盖QGraphicsItem::type()(请告诉我,如果这不是正确的方法!).

在下面的代码中,brick.h我将"Brick"设置为Type 3.现在,值3看起来非常麻烦.我更愿意用'#define'声明一些东西

#include <QGraphicsItem>

//should this #define be here?
//#define BRICK_SPRITE 3

class Brick : public QGraphicsItem
{
public:
    Brick(const QPixmap& p, QGraphicsScene *scene = 0);
    virtual QRectF boundingRect() const;
    virtual void paint( QPainter *painter,
                        const QStyleOptionGraphicsItem *option,
                        QWidget *widget );

    QPainterPath shape() const;

    enum { Type = 3 }; //enum {Type = BRICK_SPRITE}

    int type() const { return Type; }

private:
    QPixmap pixmap;
};
Run Code Online (Sandbox Code Playgroud)

放置声明'#define BRICK_SPRITE 3'的好位置在哪里?我在项目中有几个其他文件.我应该将所有定义放在单独的头文件中吗?

c++ qt constants qgraphicsitem

4
推荐指数
2
解决办法
2243
查看次数

Qt:在应用程序加载期间显示图片

我想为一个加载缓慢的应用程序添加一个启动画面.我创建了一个简单的应用程序来测试.

main.cpp:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPixmap pixmap("/home/helene/Images/my_image.png");
    if (pixmap.isNull())
    {
        pixmap = QPixmap(300, 300);
        pixmap.fill(Qt::magenta);
    }

    QSplashScreen *splash = new QSplashScreen(pixmap);
    splash->show();
    splash->showMessage("Loaded modules dsjhj");

    QQmlApplicationEngine engine;
    engine.load(QUrl("qrc:/main.qml"));

    QObject *topLevel = engine.rootObjects().value(0);
    QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
    if ( !window )
    {
        qWarning("Error: Your root item has to be a Window.");
        return -1;
    }
    else
    {
        window->showFullScreen();
    }
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

main.qml

Window {
    visible: false
    width: 360
    height: 360

    property variant t: determineT() …
Run Code Online (Sandbox Code Playgroud)

c++ qt qpixmap qml qsplashscreen

4
推荐指数
1
解决办法
3076
查看次数

即使派生类没有成员变量,我是否需要重新实现基类的所有构造函数?

我们假设我有一个基类

class Base
{
public:
    Base();
    Base(int i, double j);
    Base(int i, double j, char ch);

    virtual void print();

private:
    int m;
    double l;
    char n;
};
Run Code Online (Sandbox Code Playgroud)

我想派生一个覆盖print函数的类,但除此之外与基类完全相同.

class Derived : public Base
{
public:
    void print();
};
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在派生类上使用基类的所有构造函数,而无需为Derived类重写所有这些构造函数?

c++ inheritance constructor

4
推荐指数
1
解决办法
158
查看次数

C++构造函数 - 通过引用传递仅适用于const.为什么?

所以今天早些时候,我正在追赶好的旧C++,当我编译代码时,它无法正常工作.像一些程序员一样,我开始讨厌,并最终发现添加键盘const解决了这个问题.但是,我不喜欢黑客攻击很多,并且想要找出为什么代码在添加之后工作正常const.

这是我的代码之前添加const到构造函数:

#include <iostream>
#include <string>

using namespace std;

class Names {
private:
    string _name;
    string _surname;

public:
    Names(string &name, string &surname) : _name(name), _surname(surname) {}

    string getName() const {return _name;}
    string getSurname() const {return _surname;}
};

int main(){
    Names names("Mike", "Man");

    cout << names.getName() << endl;
    cout << names.getSurname() << endl;
}
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

names.cc:19:27: error: no matching function for call to ‘Names::Names(const char [5], const char [4])’
  Names names("Mike", "Man");
                           ^
names.cc:19:27: note: …
Run Code Online (Sandbox Code Playgroud)

c++ parameter-passing pass-by-reference pass-by-value c++11

4
推荐指数
1
解决办法
614
查看次数

QFileInfo是否与文件同步?

QFileInfo与源文件同步?或者它只是存储实例创建时的信息?

换句话说,如果我QFileInfo为我的文件创建实例.然后我改变了文件.然后,我QFileInfo为这个文件创建了第二个实例,它们会有不同的lastModified值吗?

c++ qt qt5

3
推荐指数
1
解决办法
120
查看次数