Seite 1 von 1
QComboBox beim anklicken einem slot zuweisen
Verfasst: 4. April 2010 12:41
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.
Verfasst: 4. April 2010 12:52
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, ...
Verfasst: 4. April 2010 13:06
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?
Verfasst: 4. April 2010 13:10
von Christian81
Wenn connect() true zurückliefert wird, sobald QComboBox::clicked() emittiert wird, der Slot tueEtwas() aufgerufen. Wo liegt jetzt noch das Problem?
Verfasst: 4. April 2010 13:15
von pulsonix
true gibt er nur einmalig beim Erzeugen zurück.
Beim ancklicken passiert garnix.
Verfasst: 4. April 2010 13:32
von pulsonix
das Rätsels Lösung:
QObject::connect(comboBox,SIGNAL(activated( int ) ),this,SLOT(tueEtwas()));
Danke für support!
Verfasst: 4. April 2010 14:11
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?
Verfasst: 4. April 2010 14:14
von Christian81
Das wird doch in activated(int) mit übergeben... siehe Doku:
http://doc.trolltech.com/4.6/qcombobox.html#activated
Verfasst: 4. April 2010 14:39
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.
Verfasst: 4. April 2010 14:49
von TSS
Mach einfach aus tueEtwas() die Funktion tueEtwas(int index) und schon kannst du drauf zugreifen.
Verfasst: 4. April 2010 15:01
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!
Verfasst: 4. April 2010 15:09
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.
Verfasst: 4. April 2010 15:13
von pulsonix
OK habs noch nie versucht werde es mir aber merken und bei nöten ausprobieren.
Danke für Support!