Seite 1 von 1
[gelöst] QPopupMenu: activated(int), keine untermenupunkte
Verfasst: 24. Juli 2005 18:27
von HiroProtagonist
Hi,
ich versuche gerade ein dynamisch erzeugtes PopupMenu mit ebenso dynamisch erzeugten Unter(Popup)menus zu programmieren. Alle Untermenupunkte werden per ID durchnummeriert beim erzeugen. Aber wenn ich mir mit activated(int) den Untermenupunkt übergeben lassen will, bekomme ich immer nur die ID des Übergeordneten (parent) Punktes.
Weiß jemand wie ich an die unteren Ebenen rankomme?
Danke schon mal,
Andreas
Verfasst: 24. Juli 2005 18:48
von lepsai
Wenn ich mich recht entsinne mussen die IDs über einem bestimmten Wert liegen. Ist es bei die der Fall?
Verfasst: 24. Juli 2005 22:00
von HiroProtagonist
Danke! Hatte einen kleinen Denkfehler drin. Hab beim dynamischen erzeugen der Menus das Obermenu UND den ersten Punkt des Untermenus mit id=0 belegt... das kann natürlich nicht gehen

Popup Menü
Verfasst: 25. Juli 2005 07:33
von c++coder
Hallo,
Könntest du vielleicht mal zeigen wie du das Popup Menü erstellst!?
lg g
Verfasst: 25. Juli 2005 20:41
von HiroProtagonist
Bitte scheeeen:
Code: Alles auswählen
struct PopupConnector{
PopupConnector(QString n, QPopupMenu *p){
name=n;
ptr=p;
}
QString name;
QPopupMenu *ptr;
};
QPtrList<PopupConnector> conList;
QPtrList<MyMenuItem> allItems;
MyMenuItem *item;
QPopupMenu *menu;
bool found;
for(int i=0;i<allItems.count();i++){
found=false;
item=allItems.at(i);
if(item->top()==""){
topMenu->insertItem(item->name(),i+1,i+1);
}
else{
for(int j=0;j<conList.count();j++){
if(conList.at(j)->name==topit()){
found=true;
menu=conList.at(j)->ptr;
}
}
if(!found){
menu=new QPopupMenu(countryPopup);
topMenu->insertItem(item->top(),menu,0,0);
conList.append(new PopupConnector(item->top(),menu));
connect(menu,SIGNAL(activated(int)),this,SLOT(someMenuItemClicked(int)));
}
menu->insertItem(item->name(),i+1,i+1);
}
Ich hoffe ich konnte helfen. Dieser Programmteil erhebt keinerlei Anspruch auf vollständigkeit. Es sind zum Beispiel noch keine Sonderfälle abgefangen (z. B. was passiert, wenn top() des einen Menupunktes das selbe beinhaltet wie ein zuvoriger anderer in name().)
Aber das Prinzip wird glaub ich deutlich....
Ich brauch das ganze im zusammenhang mit beliebig hinzuladbaren Funktionalitäten zu meinem Programm in Form von DLL's, die durch den Benutzer ansprechbar sein sollten. Dazu benutze ich diese dynamisch erstellten Menus.
Andras