Bonjour,
J'ai une fenêtre QMainWindow avec une mdi.
Je souhaiterais créé des QWidget que j'ajouterai dans mon mdi grâce à des plugins avec des dlls.
Comment dois-je m'y prendre ?
Merci d'avance
Config: Qt 4.5.0 sous Visual studio
Bonjour,
J'ai une fenêtre QMainWindow avec une mdi.
Je souhaiterais créé des QWidget que j'ajouterai dans mon mdi grâce à des plugins avec des dlls.
Comment dois-je m'y prendre ?
Merci d'avance
Config: Qt 4.5.0 sous Visual studio
est-ce que ta question c'est comment créer des plugins pour Qt Designer pour construire ton interface avec ? si c'est cela, je suis en train de réfléchir a la rédaction d'un tutoriel pour cela.
Si tu te sers de l'intégration a visual studio, y'a un wizard pour cela !
Sinon, en attendant, regarde un peu la doc ici :
http://qt.developpez.com/doc/4.3/des...mwidgetplugin/
si tu galeres, je t'enverrai un de mes plugins pour que tu regardes le code (je dis pas que c'est le mieux, mais ca marche).
Merci pour ta réponse.
Mais ce n'est pas un plugin pour QtDesigne mais un plugin pour une application perso que je souhaite réaliser.
Chaque plugin contiendra une fenêtre que l'on pourra afficher X fois (X appartient [0;+infini[) dans un mdi.
J'ai trouvé 2 liens que je vais creuser :
Si tu as d'autres informations
Ton code m'intéresse stp
un bon example, il me semble
http://qt.developpez.com/doc/4.5/tools-plugandpaint/
Mais donc dans visual studio,
Pour chaque plugin je crée un nouveau projet Qt Library mais je l'ajoute à la solution ou je crée une nouvelle solution ?
Merci d'avance
Bonjour,
Donc j'ai créé une nouvelle solution. Voici mon code :
Je le compile, j'obtiens une dll, je la place dans le dossier de mon executable pour qu'il la charge :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #ifndef CAESAR_H #define CAESAR_H #include <QtGui> #include "../algorithm_interface.h" class Caesar : public QObject, public Algorithm_interface { public: Caesar(); ~Caesar(); QString getName() { return tr( "Caesar cypher" ); }; QList< QString > getDocumentation() { QList< QString > documentation; return documentation; } private: // }; #endif // CAESAR_H
Mais il ne charge pas le plugin !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 MainWindow::MainWindow() : QMainWindow() { ... // Plugins loadPlugins(); ... } void MainWindow::loadPlugins() { QDir pluginsDir = QDir( qApp->applicationDirPath() ); //pluginsDir.cd( ".." ); foreach( QString fileName, pluginsDir.entryList( QDir::Files ) ) { QPluginLoader loader( pluginsDir.absoluteFilePath( fileName ) ); QObject *plugin = loader.instance(); if ( plugin ) { Algorithm_interface *algorithm = qobject_cast< Algorithm_interface* >( plugin ); if ( algorithm ) //m_operationList; QMessageBox::information( this, "", algorithm->getName() ); } } }
Comment dois-je m'y prendre ?
Merci d'avance
J'ai continué mes essais mais je n'ai toujours pas réussi ...
Quelqu'un pourrait m'aider ??
Merci d'avance
Ta classe Caesar n'utilise pas la macro Q_INTERFACES, et si tu as un fichier cpp, as-tu bien mis Q_EXPORT_PLUGIN2 ? Si tu n'en as pas, il est nécessaire.
Il serait préférable que tu relises l'exemple indiqué par Yan parce que j'ai pas l'impression que tu l'ais vraiment compris.
C'est bon ça à l'air de marcher. Merci beaucoup![]()
Partager