IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Incrémentation de QPoint


Sujet :

Qt

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 58
    Points
    58
    Par défaut Incrémentation de QPoint
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QList<QAction *> actions;
    	QPoint pnt ;
    	QAction *action = new QAction(this->GetNameModule(), console);
    	connect(action, SIGNAL(triggered()), this, SLOT(InsertWidgetModule()));
    	if (console->ui.treeView->indexAt(pnt).isValid()) {
    		actions.append(action);
        }
    	if (actions.count() > 0)
    		QMenu::exec(actions, console->ui.treeView->mapToGlobal(pnt));
    Je veux créer un menu contextuel dans mon treeview.
    Mais le problème réside sur le fait que je n'arrive pas à incrémenter mon QPoiny afin que mes menus contextuels apparaissent l'un au dessous de l'autre.
    En fait mon application est bâtis sur une architecture à plugins avec Design pattern "Inversion de contrôle" ce qui assure que chaque plugin doit s'afficher dans le menu contextuel.
    Et dans mon cas tous les menus contextuels des plugins s'affiche l'un sur l'autre.
    Comment pourrais je remédier à ce problème et incrémenter le QPoint?

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monQPoint.setY(monQPoint.y() + 20); // 20 pixels plus bas par exemple
    à chaque ajout de plugin ?

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 58
    Points
    58
    Par défaut
    J'ai un problème en fait lorsque j'ai écrit le code suivant approprié à la méthode de plugin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void ClamavView::FillModuleInTreeContextMenu(QObject *plugin,
    		QList<QAction *> actions, QPoint pnt) {
    	QAction *action = new QAction(this->GetNameModule(), console);
    	connect(action, SIGNAL(triggered()), this, SLOT(InsertWidgetModule()));
    	if (console->ui.treeView->indexAt(pnt).isValid()) {
    		actions.append(action);
    	}
    }
    Et le code suivant du projet qui charge 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
    26
    27
    28
    29
     
    void ManagementConsoleView::ShowTreeContextMenu(const QPoint& pnt) {
    		pluginsDir = QDir(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");
    	QList<QAction *> actions;
    	foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
    			QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
    			QObject *plugin = loader.instance();
    			if (plugin) {
    				ModuleInterface *iModule = qobject_cast<ModuleInterface *> (
    						plugin);
    				iModule->FillModuleInTreeContextMenu(plugin, actions, pnt);
                            if (actions.count() > 0)
    	                        QMenu::exec(actions, ui.treeView->mapToGlobal(pnt));
    				pluginFileNames += fileName;
    			}
    		}
    }
    En fait le contextuel menu ne s'affiche pas.
    Mais lorsque je déplace la partie suivante du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (actions.count() > 0) {
    		pnt.setY(pnt.y() + 20);
    		QMenu::exec(actions, console->ui.treeView->mapToGlobal(pnt));
    	}
    Le menu contextuel de chaque plugin apparait séparement.
    Et moi je désire faire apparaitre tous les plugins sous forme d'une liste de menu contextuel et non séparement

Discussions similaires

  1. [CODE] auto incrémentation ?
    Par Roi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/09/2003, 15h09
  2. Incrémentation d'un champ de la table
    Par viny dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/09/2003, 20h33
  3. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19
  4. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  5. Post incrémentation?
    Par Defrag dans le forum C
    Réponses: 4
    Dernier message: 08/10/2002, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo