lundi 22 juin 2015

Qt - Using Style Sheet

Voici le code Qt/C++ minimum pour bien commencer avec les "style sheet" de Qt. La documentation de Qt est très jolie mais pas très pratique au sens utilisable du terme, il y a très peu de petits exemples concrets.

Ce que je souhaite faire :
  • créer ma feuille de style 
  • l'appliquer à mon projet
Je prends une feuille de style toute faite, je pourrais la particulariser à loisir par la suite. J'ai trouvé "coffee.qss" dans l'exemple "stylesheet".

Références

Sur le site Developpez.com, niveau avancé, pour tout savoir sur les styles Qt.

Ajoutez la feuille de styles dans les ressources .qrc

Il faut vous arranger pour obtenir l'arborescence suivante dans votre projet :

Qt - Feuilles de style
Ajouter un fichier de ressource, créez le répertoire qss, y insérer la feuille de style "coffee.qss" puis faire boutons droit sur "mysstylesheet.qrc" et enfin : Ajouter fichier existant.

Appliquer "coffee.qss" dans votre projet

Il faut écrire un peu de code C++ pour appliquer cette feuille de style. Dans le projet exemple "stylesheet" il y a un sélecteur de css avec une dropbox et tout un bordel que l'on ne souhaite pas. 

Dans mainwindow.cpp on va ajouter le loader de style sheet :

void MainWindow::loadStyleSheet()
{
    QFile file(":/qss/coffee.qss");
    file.open(QFile::ReadOnly);
    QString styleSheet = QString::fromLatin1(file.readAll());

    qApp->setStyleSheet(styleSheet);
}

Il suffit maintenant d'appeler cette fonction dans la construction de l'UI :

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //
    // Load the style sheet called "coffe.qss"
    // in "qss" directory
    //
    loadStyleSheet();
}

Le tour est joué.

Lancer l'exécution du projet QtStyleSheet

A l'exécution du projet, la feuille de style est appliquée :

Qt StyleSheet Projet
Voici le code à télécharger : Download

Et si vous cherchez des stylesheet gratuites suivez le lien : Ici
N'hésitez pas à cliquer, partager, c'est fun !