[gelöst] Fehler beim Abfragen von Radiobuttons

Verschiedenes zu Qt
Antworten
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

[gelöst] Fehler beim Abfragen von Radiobuttons

Beitrag von qtNiko »

hallo,

fange gerade mit QT3/QtDesigner3 und C++ an, habe diverse Beispiele angesehen, aber noch viele Fragen. Ich arbeite mit Suse 10.1 und dem darin enthaltenen Qt3, bzw. QtDesigner3.

Mein Problemchen:
In meiner Anwendung gibt es eine QButtonGroup mit 3 RadioButtons, exclusive.
Bei Klick auf einen der Buttons soll einfach ein Labeltext verändert werden.

1. Versuch, funktioniert
QButtonGroup, Signal clicked(int), mit Slot setFileInputLabel( int) verbunden.
Code:
void mainForm::setFileInputLabel( int pressedButton )
{
if (pressedButton==2)
Label1->setText("Terrain-Datei");
...
}


Nun versuchte ich es mit der Property "selectedId" von QButtonGroup.
Meine QButtonGroup heißt GroupSimType.

2. Versuch
code:
void mainForm::setFileInputLabel( int pressedButton )
{
if (GroupSimType->selectedId==2)
Label1->setText("Terrain-Datei");
...
}

Nach make erhalte ich nun die Fehlermeldung:
Fehler: invalid use of member (did you forget the »&« ?)

Wenn ich dagegen schreibe
if (GroupSimType->selectedId()==2)
dann rufe die gleichnamige Funktion auf und damit klappt es wieder.

Frage 1: Kann denn nicht direkt auf die Property selectedId zugreifen?

Frage 2: Wie kann ich ein mit Qt3 erzeugtes Programm mit Qt4 und vor allem QtDesigner4 weiterbearbeiten?

Frage 3: Wie kann ich Qt3/QtDesigner3 und Qt4/QtDesigner4 nebeneinander auf meinem Suse Linux 10.1 laufen lassen?
Ein erster Versuch endete mit einer Fehlermeldung von qmake, die sinngemäß lautete: "... program generated with too old version of qtdesigner..."
Zuletzt geändert von qtNiko am 15. Juni 2007 22:49, insgesamt 1-mal geändert.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: Fehler beim Abfragen von Radiobuttons

Beitrag von macman »

Vergiss Qt3 und arbeite nur mit Qt4.
qtNiko hat geschrieben:Frage 2: Wie kann ich ein mit Qt3 erzeugtes Programm mit Qt4 und vor allem QtDesigner4 weiterbearbeiten?
Gar nicht. Du musst das komplette Programm konvertieren.
http://doc.trolltech.com/4.2/porting4.html
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

Zu Frage 1:
Auf Eigenschaften kannst du nur über eine Funktion zugreiffen.
(http://doc.trolltech.com/3.2/qbuttongro ... selectedId)
Ich denke aber, dass du die Klammer noch verkraften kannst... :lol:

Ich würde auch so früh wie möglich auf Qt 4 umstellen. Ist bei Suse auch schon dabei, ansonsten kannst du es auch selber installieren. Mit der Umstellung solltest du klar kommen, da die Grundstruktur dieselbe geblieben ist, nur einige Funktionen und Klassen haben neue Namen erhalten...

Cheers
Don Tinelli
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag von qtNiko »

Danke schon mal für die beiden Antworten.

Jetzt habe ich erst mal zu tun, um mein Programm auf Qt4 umzuschreiben.

Mittlerweilen habe ich gleich noch eine Frage, die sicher unabhängig von Qt3 oder Qt4 ist:

Ich habe mehrere PushButtons, die jeweils einen Dateiöffnen-Dialog anstoßen, aber jeweils für eine andere Datei.
Um nicht mehrere Slots schreiben zu müssen, habe ich alle PushButtons mit ihren Signals pressed() mit einem einzigen Slot getFileNames() verbunden.
Im Slot frage ich nacheinander jeden PushButton mit isDown() ab, ob er gerade angeklickt ist.

Code:
...
if (Button1->isDown)
frage nach Datei 1;
if (Button2->isDown)
fragen nach Datei 2;
... usw.

Wenn ich nun auf Button2 klicke, dann kommt immer zuerst die Abfrage nach Datei 1 und dann erst die nach Datei 2.
Es sieht so aus, dass der Button1 immer den Zustand "Down" hat.
Ich nahm an, dass der Zustand "Down" nur so lange gilt, wie der Klick dauert.

Was kann man da machen?
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

qtNiko hat geschrieben:Was kann man da machen?
Zwei Möglichkeiten:
http://doc.trolltech.com/4.2/qobject.html#sender
http://doc.trolltech.com/4.2/qsignalmapper.html
Die zweite gefällt mir besser :-)
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

geklärt: Fehler beim Abfragen von Radiobuttons

Beitrag von qtNiko »

hallo,

vielen Dank für die Info.
Ich werde das gleich ausprobieren. Die zweite Lösung gefällt mir auch besser.
Dennoch muss ich schon feststellen, dass das Verhalten von QPushButton doch etwas eigenartig ist. Ohne die kompetenten Tipps in diesem Forum kommt man auf solche Lösungen nicht so ohne weiteres.
Nun ja, die Lernkurve steigt an javascript:emoticon(':D')
Very Happy
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
Antworten