[gelöst] QPopupMenu: activated(int), keine untermenupunkte

Alles rund um die Programmierung mit Qt
Antworten
HiroProtagonist
Beiträge: 7
Registriert: 14. Juli 2005 09:08

[gelöst] QPopupMenu: activated(int), keine untermenupunkte

Beitrag 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
Zuletzt geändert von HiroProtagonist am 24. Juli 2005 22:01, insgesamt 1-mal geändert.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Wenn ich mich recht entsinne mussen die IDs über einem bestimmten Wert liegen. Ist es bei die der Fall?
HiroProtagonist
Beiträge: 7
Registriert: 14. Juli 2005 09:08

Beitrag 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 :wink:
c++coder
Beiträge: 47
Registriert: 11. Juli 2005 00:20
Kontaktdaten:

Popup Menü

Beitrag von c++coder »

Hallo,

Könntest du vielleicht mal zeigen wie du das Popup Menü erstellst!?

lg g
HiroProtagonist
Beiträge: 7
Registriert: 14. Juli 2005 09:08

Beitrag von HiroProtagonist »

Bitte scheeeen: :wink:

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
Antworten