Qt

How to get RSS flux in QML

For this example, i using the QtQuick 1.1, but normally, you shouldn’t have problem if you use the newer version of QtQuick.

For this example, i getting the RSS from http://vianavigo.com/fr/actualites-trafic/rss-vianavigo-vos-transports-en-commun-en-ile-de-france-optile-ratp-sncf/?type=102

XmlListModel{
id: xmlModel
source: "http://vianavigo.com/fr/actualites-trafic/rss-vianavigo-vos-transports-en-commun-en-ile-de-france-optile-ratp-sncf/?type=102"
query: "/rss/channel/item
namespaceDeclarations: "declare namespace content=\"http://purl.org/rss/1.0/modules/content/\";"   //For getting content:encoded !!
XmlRole { name: "pubDate"; query: "pubDate/string()" }
XmlRole { name: "titre"; query: "title/string()" }
XmlRole { name: "description"; query: "description/string()" }
XmlRole { name: "detail"; query: "content:encoded/string()" }            //You should declare the namespace for getting this parameters
}

And now your xmlModel is ready you can use

ListView{
id: listView
model: xmlModel
}

For getting this example :

media:thumbnail url="<a href="http://farm5.static.flickr.com/4048/4362801851_b80289ca0e_s.jpg">http://farm5.static.flickr.com/4048/4362801851_b80289ca0e_s.jpg</a>"height="75" width="75"

 

XmlRole { name: "thumbnail"; query: 'media:thumbnail/@url/string()' }

[How To] Comment utiliser les QState et les QStateMachine avec Qt ?

Aujourd’hui nous allons voir comment utiliser les machines à état dans Qt.

Avant de commencer, un peu de vocabulaire !

QState = Un ÉTAT
QStateMachine = Machine à état
Les QStates fonctionne avec une QStateMachine.

Etape 1 :  Instanciation

#include QStateMachine;
#include QState;

QMachine *machine = new QStateMachine(this); 
//Je crée un état qui peu comporter + d'un état, par exemple un état HIDE/SHOW
//Cela peut vous permettre par exemple d'associer/regrouper plusieurs état en 1 et de faire appel a cette état là au lieu de les appeler un par un
//Dans mon exemple je ne l'utilise pas en tant, mais je vous montre comment l'utiliser
QState *stateGroup = new QState(); 

QState *stateHide = new QState(stateGroup);//Voici mon état HIDE
QState *stateShow = new QState(stateGroup);//Et un autre état qui a aussi pour parent le stateGroup

Etape 2 : Paramétrage des états

//Une fois nos états créés, nous les paramétrons

stateShow->assignProperty(ui->;wdgToolBarInfo, "geometry", QRectF(100, 410, 700, 70));
//Dans mon cas je change juste le Y pour faire un effet de transition et afficher mon widget

stateHide->assignProperty(ui->wdgToolBarInfo, "geometry", QRectF(100, 490, 700, 70)); 
//Pareil pour le cacher

Etape 3 : Créer les changements d’états

stateShow->addTransition(ui->button_exit, SIGNAL(clicked()), stateHide);
//Quand nous serrons dans l'état SHOW et SI nous cliquons sur le bouton "bouton_exit", l'état hide sera appelé.

stateHide->addTransition(ui->button_exit, SIGNAL(clicked()), stateShow); 

//Vous pouvez faire la meme chose avec le groupe
//Ainsi, tous les états liés à ce groupe seront appelés.
stateHide->addTransition(ui->button_exit, SIGNAL(clicked()), stateGroup); 

Etape 4 : Animation !

machine->addDefaultAnimation(new QPropertyAnimation(ui->wdgToolBarInfo, "geometry")); 
//Ici je n'ai qu'un wdg dans mon QState donc je rajoute que lui dans mes animations
//Dans cette exemple, l'animation sera fait quand une des propriétés de la geometry changera (x,y,width,height)
//Si vous voulez faire une animation sur autre chose que la geometry vous devez le specifier à la machine à état, par exemple, l'opacity etc ...

Etape 5 : On finalise le tous ! 

stateGroup->setInitialState(stateHide); //On mets l'état par default qui sera utilisé
machine->addState(stateHide); //On rajoute nos états dans notre Machine à état
machine->addState(stateShow);

machine->start(); //On lance notre machine

Voilà ! Ultra simple non ?

How to get appVersion with Qt and QML

You want get the app version from your .pro file. Is very simple !

In your .pro write this :

VERSION += 0.3.0
DEFINES += APPLICATION_VERSION=\"\\\"$$VERSION\\\"\"

Save it: CTRL+S

Now when your write APPLICATION_VERSION in your application, you can get when version here 0.3.0.

For using it in your QML, write in your main.cpp

viewer.rootContext()->setContextProperty("appVersion", APPLICATION_VERSION);

In your QML:

Rectangle{
     Text{
          id: myText
          text: appVersion
     }
}