Wieso funktioniert der SLOT nicht

Alles rund um die Programmierung mit Qt
Antworten
getit
Beiträge: 10
Registriert: 19. April 2007 15:09

Wieso funktioniert der SLOT nicht

Beitrag von getit »

Hi,

hab mir das Listing im Anhang aus dem Buch "C++ GUI Programmierung mit Qt4" abgeschrieben und mir dann selber noch den SLOT "on_moreButton_clicked()" geschrieben.

Nur funktioniert der SLOT nicht so wie er soll.
Einfach mal anschauen und helfen :)
Dateianhänge
sort.zip
(19.66 KiB) 133-mal heruntergeladen
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wie soll da was passieren wenn kein connect() vorhanden ist?
Und wo kommt moreButton überhaupt her?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

@getit:

Du hast vergessen die .ui-Datei mit ins Archiv zu packen, deswegen kann man den Quelltext so nicht ganz nachvollziehen!

Ich vermute, dass beim ersten Klick auf den moreButton dieser einen anderen text() zurückliefert als "More", und deswegen wird dann der Text auf "More" gesetzt; ab dem 2ten Klick funktioniert ja dann das Verändern des Textes, wenn auch nur "phasenverschoben".
getit
Beiträge: 10
Registriert: 19. April 2007 15:09

Beitrag von getit »

Und wo kommt moreButton überhaupt her?
Den habe ich mit dem Designer erstellt - sorry ich dachte der würde im Code irgendwo auftauchen :roll:

Wie soll da was passieren wenn kein connect() vorhanden ist?
... Nach der Erstellung der Benutzerschnittstelle verbindet setupUi() alle Slots, die der Namenskonvention on_objectName_signalName() folgen, mit dem entsprechenden signalName()-Signal von objectName. In unserem Beispiel bedeutet dies, dass setupUi() die folgende Signal/Slot-Verbindung einrichtet:
connect(moreButton, SIGNAL(clicked()), this, SLOT(on_moreButton_clicked()));

Und das die SIGNAL/SLOT-Verbindung da ist, sieht man ja wenn man die exe Mal ausprobiert. Nur funktioniert diese nicht wie gewünscht.
getit
Beiträge: 10
Registriert: 19. April 2007 15:09

Beitrag von getit »

Anbei die ui-Datei
Dateianhänge
sortdialog.ui
(8.54 KiB) 126-mal heruntergeladen
getit
Beiträge: 10
Registriert: 19. April 2007 15:09

Beitrag von getit »

Ich habs rausbekommen :D

Hab einfach in der cpp des sortdialog.cpp den Text des Buttons nochmal explizit gesetzt.

Anbei das komplette Listing
Dateianhänge
sort.zip
(19.66 KiB) 132-mal heruntergeladen
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

Hab einfach in der cpp des sortdialog.cpp den Text des Buttons nochmal explizit gesetzt.
Das ist unnötig, wenn du dir im Designer mal anschaust, welchen Text du dem Button gegeben hast, nämlich: &More; du prüfst aber später ob der Text More lautet.

Wenn du also das &-Zeichen im Code einfügst, funktioniert auch alles wie gewollt!

Code: Alles auswählen

void SortDialog::on_moreButton_clicked(){
    if (moreButton->text() == "&More"){
        moreButton->setText("Less");
    } else {
        moreButton->setText("&More");
    }
}
getit
Beiträge: 10
Registriert: 19. April 2007 15:09

Beitrag von getit »

Danke :D
Antworten