flags master ok

flags
Francois DELOBEL 4 weeks ago
parent d39ca6a372
commit a0a2407aa2

@ -1,7 +1,12 @@
#include "country.h"
Country::Country(QString name, QString capital, QString iso, QString region, QString alt, QObject *object)
: QObject{object},
m_name{name},
m_capital{capital},
m_iso{iso},
m_region{region},
m_alt{alt}
{}
QString Country::capital() const

@ -16,7 +16,8 @@ class Country : public QObject
public:
Country(QString name, QString capital, QString iso, QString region, QString alt, QObject *object);
Country(QString name, QString capital, QString iso, QString region,
QString alt, QObject *object = nullptr);
QString capital() const;
void setCapital(const QString &newCapital);
QString name() const;

@ -5,7 +5,9 @@
#include <QJsonObject>
#include <QJsonArray>
QList<Country *> CountryFactory::load(QString filename) {
#include "country.h"
QList<Country *> CountryFactory::loadFromJson(QString filename) {
QFile file(filename);
file.open(QIODevice::ReadOnly);
@ -16,9 +18,16 @@ QList<Country *> CountryFactory::load(QString filename) {
QJsonArray liste = objet["country"].toArray();
QList<Country*> countries;
for ( QJsonValue value : liste) {
qWarning() << value["name"].toString();
countries.push_back(new Country(
value["name"].toString(),
value["capital"].toString(),
value["@iso"].toString(),
value["region"].toString(),
value["alt"].toString()
));
}
return {};
return countries;
}

@ -10,7 +10,7 @@ class CountryFactory
{
public:
static QList<Country*> load(QString filename);
static QList<Country*> loadFromJson(QString filename);
};
#endif // COUNTRYFACTORY_H

@ -1,6 +1,8 @@
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include "country.h"
#include "countryfactory.h"
int main(int argc, char *argv[])
@ -22,8 +24,13 @@ int main(int argc, char *argv[])
},
Qt::QueuedConnection);
CountryFactory::load(":/assets/data_en-GB.json");
QList<Country*> countries = CountryFactory::loadFromJson(":/assets/data_en-GB.json");
QList<QObject*> cc;
for ( auto cr : countries)
cc.append(static_cast<QObject*>(cr));
engine.rootContext()->setContextProperty("countries", QVariant::fromValue(cc));
engine.load(url);
return app.exec();
}

@ -5,5 +5,29 @@ Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
title: qsTr("Flags of the world")
ListView {
id: lv
anchors.fill: parent
model: countries
delegate: Rectangle {
width: lv.width/3
height: 30
Text {
text: name
font.pixelSize: 20
anchors.verticalCenter: parent.verticalCenter
}
Image {
source: "qrc:/assets/flags/"+iso+".svg"
height: parent.height - 4
anchors.right: parent.right
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter
}
}
}
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save