我正在解析一个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) 我做了一个返回a的函数QString.在我的函数中的某些点它应该返回一个空的QString.
刚回来""不起作用.当我使用QString::isEmpty()它时不是.我的"应急计划"是返回一个"空"字符串并检查文本是否为"空".但我不认为那是好风格.
那我怎么回空QString?
有什么办法可以在QPainter居中对齐的情况下绘制图像吗?我看到QPainter::drawText给了我们这个规定,但drawImage没有。我有一个源矩形、目标矩形和一个图像。当源尺寸很小时,图像会被绘制在页面的左侧。我希望它打印居中对齐。
在这个程序中,我创建了两个指针(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) 有没有机会找出尺寸QPainter?我QPainter用于绘制移动应用程序的整个图形界面.问题是某些应用程序覆盖窗口的菜单,每个设备的大小都不同,因此几乎不可能!有没有可能做到而不是知道QPainter尺寸?
编辑:简单width()而height()有效!
我正试图建立一个突破性的游戏克隆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'的好位置在哪里?我在项目中有几个其他文件.我应该将所有定义放在单独的头文件中吗?
我想为一个加载缓慢的应用程序添加一个启动画面.我创建了一个简单的应用程序来测试.
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) 我们假设我有一个基类
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++,当我编译代码时,它无法正常工作.像一些程序员一样,我开始讨厌,并最终发现添加键盘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) 是QFileInfo与源文件同步?或者它只是存储实例创建时的信息?
换句话说,如果我QFileInfo为我的文件创建实例.然后我改变了文件.然后,我QFileInfo为这个文件创建了第二个实例,它们会有不同的lastModified值吗?