Forum Programmation.c++ Problème sur QT designer et les Popup Menu

Posté par  .
Étiquettes : aucune
0
7
oct.
2004
Salut... tous...

Je bosse un petit peu sur Qt 3.3.1 en ce moment, et j'ai quelques petits soucis avec leur charmant designer...

Est ce que quelqu'un sait faire un menu contextuel sur un element d'une list view...
J'arrive plus ou moins à en créer un, en faisant Add Menu sur la QMenuBar... puis sur l'évenement contextMenuRequested() sur la QListView, si un item est selectionné, je fais un popup() du menu sur le point cliqué... ça marchouille, mais le menu apparait aussi dans la MenuBar, et ça, ça ne me plait pas du tout...

Quand je regarde dans le code généré par Qt, je vois que son parent est this, alors que lorsqu'on regarde dans les exemples (dont ils manquent les .ui, comme par hasard), on constate qu'il file comme parent, le widget lui même.
...En plus code ça fait un truc du genre...
Code généré :
menuPopup = new QPopupMenu( this );
MenuBar->insertItem( QString(""), menuPopup, 4 );
Code exemple listviews :
messages = new QListView( this );
menu = new QPopupMenu( messages );

Certes, il est vrai que je pourrais le créer complètement à la mano dans le slot void init(), mais je trouve ça nul qu'on puisse pas le faire un peu moins avec sa b... et son couteau... mais voilà, j'aime bien comprendre le pourquoi du comment, s'il existe...

@+++...
  • # pas vraiment une aide

    Posté par  . Évalué à 2.

    Pour le peu de Qt que j'ai fait, tout ce que je peux te dire, c'est que Qt-Designer c'est bien, mais je ne crois pas qu'on puisse tout faire avec ... (je me trompe peut-être).

    Mais, ce que je fais dans ce cas là, c'est une classe séparée (à la mano ;-)) dérivant d'un QPopupMenu appelé par la QListview qui va bien.
    Effectivement, il faut créer explicitement une instance lors de l'événement contextMenuRequested(...).

    Ce qui cloche en effet avec l'approche via le designer, c'est que ton popupmenu appartient (à mon avis) au QMenuBar, ce qui fait que lorsque tu active ce menu via le menu contextuel, il est affiché dans la barre de menu (il y a ppartient, c'est donc logique) et à l'endroit que tu définis explicitement ... ça à l'air louche dit comme ça non ?

    Je sens que ça n'a pas du servir à grand chose mon baratin ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.