Salut,

C'est parti, je me jette à l'eau

2.1 QtCore
2.1.3 QLibrary
Q: Qu'est-ce?
R: QLibrary permet de charger de façon multi-plateforme une bibliothèque dynamique, ainsi que d'en récupérer des pointeurs vers les fonctions exportées.

Q: Comment s'en servir?
R: Après avoir créé un objet de ce type, il faut spécifier le nom de la bibliothèque dynamique à associer *sans préciser l'extension* (ce n'est plus multi-plateforme sinon ). Il suffit ensuite d'appeler resolve() en fournissant le nom du symbole à trouver. Il est retourné en tant que void*, donc un cast sera bien évidemment nécessaire. Sont aussi fournies des fonctions statiques évitant l'instanciation dans le cas où on ne voudrait récupérer qu'un symbole.
Par exemple, admettons qu'une fonction d'une bibliothéque permette de compter le nombre de lettre dans un mot:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
typedef int (*StringLength)(char*); // définition du type de fonction
QLibrary lib("string_util"); // création d'un objet QLibrary lié à string_util (.dll, .so ou autre)
StringLength strLength = (StringLength)lib.resolve("strlen"); // récupération d'un pointeur sur notre fonction partagée
if(strLength)
    strLength("QLibrary"); // devrait renvoyer 9... si tout va bien ;)
2.2 QtGui
Q: Comment afficher une image dans mon interface?
R: La méthode la plus simple est d'utiliser un QLabel conjointement à un QPixmap.
Voici 2 exemples:
> L'image à afficher est externe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
QLabel *lbl = new QLabel(parent);
lbl->setPixmap(QPixmap("media/image.png")); // où media serait un sous répertoire du répertoire d'exécution
> L'image est une ressource:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
lbl->setPixmap(QPixmap(":/image.png"));
2.2.1 QDesktopServices
Q: Comment ouvrir un document (ou autre) avec l'application associée par défaut?
R: La classe QDesktopServices est là pour répondre à ce besoin. Elle peut etre étendue si nécessaire pour ajouter ses propres handlers pour un schéma donné.
Voici quelques exemples d'utilisation de cette classe:
> Ouvrir un document .cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
QDesktopServices::openUrl(QUrl::fromLocalFile("/path/to/fichier.cpp"));
> Créer un mail dans le client mail par défaut (l'envoi reste manuel):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
QDesktopServices::openUrl(QString("mailto:destinataire@domaine.extension?subject=sujet"));