d'après ce que je crois comprendre, le nom de la relation et l'id de menu sont liées (je vois bien un item "search" par exemple), donc pourquoi mettre les 2 en paramètre? (j'imagine que rel == kactionmenu_map[lrel]->popupMenu()->text(id) ou approchant, quitte à passer par une map ou autre)
auquel cas un
slot void goToLink(int id=-1);
connect( kactionmenu_map[lrel]->popupMenu(), SIGNAL( activated( int ) ), this, SLOT( goToLink( int ) ) );
serait suffisant.
Le seul cas (que je vois) pour lequel les 2 seraient effectivement indépendants, c'est un appel d'une meme relation qui peut "bouger" dans le menu sans modifier le nom des items eux-mêmes (ce qui est sacrément vicieux, et à mon avis pas très user-friendly :))
ou alors pourquoi pas quelque chose du genre :
public slots:
void slotGoToLinkById(int id) {
QPopupMenu * menu = dynamic_cast<QPopupMenu *>(sender());
if(menu) {
gotoLink(menu->text(id),id);
}
}
et
connect( kactionmenu_map[lrel]->popupMenu(), SIGNAL( activated( int ) ), this, SLOT( slotGoToLinkById( int ) ) );
de toute manière, faire un slot avec un argument statique serait contre-performant (puisque ça rend ton code... statique) et le créer dynamiquement est peut-être possible (sans doute, puisque rien n'est vérifié avant exécution) en bricolant le code des meta-objets à la main, mais de base je ne crois pas: en tout état de cause, ça serait un massacre au niveau du nombre de connexions et slots, et donc des performances de l'application
# Re: [Qt et Slots] Help !
Posté par Yann Hodique (site web personnel) . En réponse au journal [Qt et Slots] Help !. Évalué à 2.
auquel cas un
serait suffisant.
Le seul cas (que je vois) pour lequel les 2 seraient effectivement indépendants, c'est un appel d'une meme relation qui peut "bouger" dans le menu sans modifier le nom des items eux-mêmes (ce qui est sacrément vicieux, et à mon avis pas très user-friendly :))
ou alors pourquoi pas quelque chose du genre :
et
de toute manière, faire un slot avec un argument statique serait contre-performant (puisque ça rend ton code... statique) et le créer dynamiquement est peut-être possible (sans doute, puisque rien n'est vérifié avant exécution) en bricolant le code des meta-objets à la main, mais de base je ne crois pas: en tout état de cause, ça serait un massacre au niveau du nombre de connexions et slots, et donc des performances de l'application