QComboBox beim anklicken einem slot zuweisen

Alles rund um die Programmierung mit Qt
Antworten
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

QComboBox beim anklicken einem slot zuweisen

Beitrag von pulsonix »

Hallo,

habe eine Combobox

MyComboBox *comboBox = new MyComboBox(this->ui->scrollAreaWidgetContents_2);

und möchte das wenn diese angecklicked wird ein slot aufgerufen wird.

z.B. so in etwa

QObject::connect(comboBox,SIGNAL(clicked()),this,SLOT(tueEtwas()));

Aber will natürlich nicht.

Jeden Vorschlag nehme ich dankend an.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

'Will nicht' ist eine sehr gute Beschreibung des Problems...
Ist this von QObject abgeleitet, ist das Q_OBJECT Makro definiert, was gibt QObject::connect() zurück, ...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Beitrag von pulsonix »

Hallo Christian,

this ist die aktuelle Klasse in der ich mich befinde. connect gibt true zurück.

Ich will nicht meinen das der von mir gegangene Weg richtig ist. Ich wollte mehr verdeutlichen was der Weg ist den ich gehen möchte.

Sobald die ComboBox angecklicked wird möchte ich eine Funktion oder slot Funktion aufrufen.

Wie macht man soetwas?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn connect() true zurückliefert wird, sobald QComboBox::clicked() emittiert wird, der Slot tueEtwas() aufgerufen. Wo liegt jetzt noch das Problem?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Beitrag von pulsonix »

true gibt er nur einmalig beim Erzeugen zurück.

Beim ancklicken passiert garnix.
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Beitrag von pulsonix »

das Rätsels Lösung:

QObject::connect(comboBox,SIGNAL(activated( int ) ),this,SLOT(tueEtwas()));


Danke für support!
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Beitrag von pulsonix »

Wo wir gerad bei ComBox sind hier noch eine Frage/Problem.

Also mit

void KlasseX::tueEtwas()
{
MyComboBox* sender = qobject_cast < MyComboBox* > (QWidget::sender());

qDebug() << "Bin ich die richtige Box? " << sender->x;

}

bekomme ich den richtigen eintrag, was soviel heist wie das der sender auch die Combobox ist, welche ich angecklicket hatte.

Nur wie kriege ich jetzt heraus was der aktuelle Eintrag in der ComBox ist?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das wird doch in activated(int) mit übergeben... siehe Doku: http://doc.trolltech.com/4.6/qcombobox.html#activated
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Beitrag von pulsonix »

Hab geschaut und bin nicht schlauer geworden.

Das da was mit übergeben wird ist mir ja soweit klar. Nur wie ich darauf zugreifen kann ist mir nicht so ganz klar.
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag von TSS »

Mach einfach aus tueEtwas() die Funktion tueEtwas(int index) und schon kannst du drauf zugreifen.
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Beitrag von pulsonix »

tueetwas ist eine slot Funktion nix da mit Parameter.

wenn ich

sender->

schreibe zeigt er mir kommischerweise nicht alle Möglichkeiten an.

Die Lösung ist

sender->currentText();

So hatte ich mir es auch anfangs gedacht nur hat QT-editor mir nicht currenText() angezeigt.

Ich habs trotzdem versucht und es ging.

Ein Rätsel warum QT mir das nicht anzeigt, aber das zeigt man sollte nicht zuviel seinen editor vertrauen.

Danke für support!
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag von TSS »

Wieso sollte eine Slot-Funktion keinen Parameter haben dürfen? Man muss nur aufpassen, dass das Signal auch entsprechende Parameter hat, aber das ist hier gegeben.
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Beitrag von pulsonix »

OK habs noch nie versucht werde es mir aber merken und bei nöten ausprobieren.

Danke für Support!
Antworten