- QT
- AbulEduApplicationV1
- AbulEduAproposV1
- AbulEduAudioV1
- AbulEduButtonListV1
- AbulEduCameraV1
- AbulEduCameraWidgetV1
- AbulEduConstantesV1
- AbulEduEditeur
- AbulEduGraphicsEtiquetteV1
- AbulEduIdentitesV1
- AbulEduInstructionV1
- AbulEduMediaplayerV1
- AbulEduMediathequeGetV1
- AbulEduMenuFeuilleV1
- AbulEduNumericLinearPadv1
- AbulEduQRCodeReaderV1
- AbulEduSingletonV1
- AbulEduSlideWidgetContainerV1
- AbulEduStackedWidgetV1
- AbulEduTexteV1
- AbulEduTextV1
- AbulEduTutorialV1
- AbulEduVirtualKeyboardV1
- AbulEduVisionneuseImageV1
- AbulEduWidgetAssistantEtapesV1
- Affichage des messages d'erreurs
- Affichage dynamique des étapes d'un éditeur
- Bouton croix de fenêtre
- Centrer une fenêtre
- Création fichierdossier temporaire unique
- Créer une AbulÉduApplicationV1 dans QtCreator
- Framework Graphic View
- Framework Graphic Viewodt
- Framework State Machine
- Générer automatiquement un dictionnaire de verbes
- Gérer la modalité des fenêtres
- Gestion des arguments
- Getters par référence et non par valeur
- Installation Qt5
- Installation Qt56
- Normalisation des modules
- Partager des variables avec différents pri
- Redimensionnement application Qt
- Redimensionner un QGraphicsSvgItem
- Tests et Logs sous Windows
- Utilisation de l'assistant AbulEduApplicationV1
- Utiliser des QSharedPointer
Utiliser un plugin¶
Note: cette documentation est encore en cours de rédaction, il se peut qu'il y ait encore des erreurs et des choses qui ne marchent pas, en particulier pour les plates formes non linux pour lesquelles je n'ai encore rien testé de tout ça !
Pour utiliser un plugin développé par un tiers il faut:- le plugin :) à placer dans un dossier "plugins" du projet, il s'agit d'un fichier .so.
- un fichier de description de ce que fait le plugin : l'interface c'est un fichier ".h" tout classique
Modification du main.cpp de votre projet¶
Pour que votre projet puisse charger des plugins il faut modifier le fichier main.cpp:
- ajouter en entête (sauf si déjà présent)
#include <QtPlugin> #include <QDir> #include <QDebug> #include <QPluginLoader> #include <QMessageBox> #include "fichier_interface_du_plugin.h"
- ajouter une fonction de chargement dynamique de plugins
bool loadPlugin() { qDebug() << "Chargement du plugin ... "; QDir pluginsDir(qApp->applicationDirPath()); #if defined(Q_OS_WIN) if (pluginsDir.dirName().toLower() == "debug" || pluginsDir.dirName().toLower() == "release") pluginsDir.cdUp(); #elif defined(Q_OS_MAC) if (pluginsDir.dirName() == "MacOS") { pluginsDir.cdUp(); pluginsDir.cdUp(); pluginsDir.cdUp(); } #endif pluginsDir.cd("plugins"); foreach (QString fileName, pluginsDir.entryList(QDir::Files)) { qDebug() << "Chargement du plugin " << fileName; QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName)); QObject *plugin = pluginLoader.instance(); qDebug() << "Chargement du plugin (2)" << plugin; if (plugin) { qDebug() << "Chargement du plugin " << fileName << " réussi"; return true; } } return false; }
- dans la fonction main un simple appel à cette fonction de chargement de plugins
if (!loadPlugin()) { QMessageBox::information(0, "Error", "Could not load the plugin"); }