da bin ich wieder mit einem Rätsel.
Ich möchte mit 3 Radiobuttons (radioButt_simline, radioButt_simbsequ, radioButt_simbgen) jeweils den Text eines Labels unter Verwendung von SignalMapper ändern.
Code für Konstruktor SimuDesign::SimuDesign() und den Slot simArtChanged():
Code: Alles auswählen
#include ...
SimuDesign::SimuDesign(QMainWindow *parent) : QMainWindow(parent)
{
setupUi(this);
/* Signalmapper für die Wechselschalter der Simulationsart:*/
QSignalMapper *sigMapp = new QSignalMapper(this);
connect(sigMapp,SIGNAL(mapped(int)),this,SLOT(simArtChanged(int)));
sigMapp->setMapping(radioButt_simline, 1);
connect(radioButt_simline, SIGNAL(clicked()),sigMapp,SLOT(map()) );
sigMapp->setMapping(radioButt_simbsequ, 2);
connect(radioButt_simbsequ, SIGNAL(clicked()),sigMapp,SLOT(map()) );
sigMapp->setMapping(radioButt_simbgen, 3);
connect(radioButt_simbgen, SIGNAL(clicked()),sigMapp,SLOT(map()) );
}
void SimuDesign::simArtChanged(int buttNr)
{
QString str;
lineEd_stopFr->setText(str.setNum(buttNr));
switch (buttNr)
{
case 1:
label_Bildinput->setText("F-Datendatei");
case 2:
label_Bildinput->setText("erstes Bild");
case 3:
label_Bildinput->setText("G-Datenbasis");
}
label_Bildinput->update(); /* sicherheitshalber */
lineEd_startFr->setText(lineEd_startFr->text() + str.setNum(buttNr));
}
Der Slot SimuDesign::simArtChanged(int buttNr) soll nun, je nach angeklicktem Knopf den Label-Text ändern.
Dies erfolgt nicht, d.h. egal welchen Knopf ich anklicke, der Text wird immer auf "G-Datenbasis" gesetzt.
Zur Kontrolle des Wertes von buttNr habe ich ihn vor und nach dem switch-Statement in jeweils ein LineEdit ausgegeben, siehe lineEd_stopFr->setText(..) und lineEd_startFr->setText(...)
Der Wert von buttNr ist stets so, wie er gemäß angeklicktem Knopf sein muss. Dennoch wird stets nur der letzte Text als Label-Text geschrieben.
Was ist hier los?