Hilfe mit dem Buttonkrieg
-
- Beiträge: 13
- Registriert: 4. Juli 2007 09:00
- Wohnort: Wien
- Kontaktdaten:
Hilfe mit dem Buttonkrieg
Also hi an Alle,
ich habe folgendes Problem:
Ich möchte mein eigens programmierten SLOT mit einem Button und dem SIGNAL => Clicked verbinden. Jeodch habe ich das Problem, dass mein SLOT mehrere Parameter braucht und ich das auf keinen Fall ändern will.
Hier kommt nur leider das Problem mit der Regel von der Connectivität von SLOTS und SIGNALS => "IN EINEM SLOT VERWENDETE METHODE\FUNKTION DARF NICHT MEHR PARAMETER ALS DAS SIGNAL HABEN".
Nun ist ja das Problem, dass das Event CLICKED nur einen boolschen Parameter hat und meine Methode hat weitaus mehr Parameter.
Wie kann ich nun den Button mit dem Signal CLICKED mit meinem SLOT mit meheren Parametern verbinden?????????
Entschuldigt mich bitte wenn diese Frage schon mehrmals gestellt wurde ich konnte aber leider nichts brauchbares bzw. eine Erklärung hierfür in der Suche finden.
Danke an all eure Bemühung schon im Vorhinaus
mfg Yosh
ich habe folgendes Problem:
Ich möchte mein eigens programmierten SLOT mit einem Button und dem SIGNAL => Clicked verbinden. Jeodch habe ich das Problem, dass mein SLOT mehrere Parameter braucht und ich das auf keinen Fall ändern will.
Hier kommt nur leider das Problem mit der Regel von der Connectivität von SLOTS und SIGNALS => "IN EINEM SLOT VERWENDETE METHODE\FUNKTION DARF NICHT MEHR PARAMETER ALS DAS SIGNAL HABEN".
Nun ist ja das Problem, dass das Event CLICKED nur einen boolschen Parameter hat und meine Methode hat weitaus mehr Parameter.
Wie kann ich nun den Button mit dem Signal CLICKED mit meinem SLOT mit meheren Parametern verbinden?????????
Entschuldigt mich bitte wenn diese Frage schon mehrmals gestellt wurde ich konnte aber leider nichts brauchbares bzw. eine Erklärung hierfür in der Suche finden.
Danke an all eure Bemühung schon im Vorhinaus
mfg Yosh
-
- Beiträge: 99
- Registriert: 27. Januar 2005 15:55
-
- Beiträge: 13
- Registriert: 4. Juli 2007 09:00
- Wohnort: Wien
- Kontaktdaten:
Ja das wäre schön aber du hast leider etwas vergessen.
ICH KANN DANN NICHT MEHR AN DIE METHODE DIE PARAMETER ÜBERGEBEN SONDERN MUSS DIESE IN GLOBALE VARIABLEN SPEICHERN UND DAS WILL ICH NICHT WEIL GLOBALE VARIABLEN UNSCHÖN SIND
auf diese Lösung bin ich leider auch schon gekommen aber diese nützt mir rechtlich wenig leider
danke
ICH KANN DANN NICHT MEHR AN DIE METHODE DIE PARAMETER ÜBERGEBEN SONDERN MUSS DIESE IN GLOBALE VARIABLEN SPEICHERN UND DAS WILL ICH NICHT WEIL GLOBALE VARIABLEN UNSCHÖN SIND
auf diese Lösung bin ich leider auch schon gekommen aber diese nützt mir rechtlich wenig leider
danke
-
- Beiträge: 13
- Registriert: 4. Juli 2007 09:00
- Wohnort: Wien
- Kontaktdaten:
OKAY SORRY DASS ICH GESCHRIEHEN HABE xD
der tipp hilft mir deswegen nicht:
Die Funktion B benötigt diese Parameter. Diese kann man aber leider nur beim Aufruf der Methode übergeben:
oder ich setzte hierfür globale Variablen auf die die Methode zugreifen kann.
JEdoch ich will keine Globale Variablen.
Wenn ich jetzt die FUNCTIONA calle habe ich leider keine chance der functionB irgendwelche Parameter zu übvergeben.
mfg
Yosh
der tipp hilft mir deswegen nicht:
Code: Alles auswählen
void functionA(void)
{
void functionB(char Name, bool ABC,....)
{}
}
Code: Alles auswählen
functionB(A, TRUE,....);
JEdoch ich will keine Globale Variablen.
Wenn ich jetzt die FUNCTIONA calle habe ich leider keine chance der functionB irgendwelche Parameter zu übvergeben.
mfg
Yosh
Mach dir dein eigenes Signal. Du connectest den Button mit einem Slot ohne Parameter und in dem emittierst Du dein eigenes Signal.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
-
- Beiträge: 13
- Registriert: 4. Juli 2007 09:00
- Wohnort: Wien
- Kontaktdaten:
Naja und wie soll ich dann eurer Meinung folgende Aufgabestellung am Besten lösen:
Einen Button der auf Knpfdruck verschiedene Texte in einer Textbox ausgibt
Ich habe mir nun gedacht ich schreibe mir einen Slot, der PRINT heißt und wo ich einen Parameter habe der als CHARARRAY dient wo der Text steht. Diesen übergebe ich dann immer Extra bei jeder Connection anweisung.
Was habt ihr für mich für einen Vorschlag wie ich das dann mit Member Variablen machen kann???
danke
mfg Yosh
Einen Button der auf Knpfdruck verschiedene Texte in einer Textbox ausgibt
Ich habe mir nun gedacht ich schreibe mir einen Slot, der PRINT heißt und wo ich einen Parameter habe der als CHARARRAY dient wo der Text steht. Diesen übergebe ich dann immer Extra bei jeder Connection anweisung.
Was habt ihr für mich für einen Vorschlag wie ich das dann mit Member Variablen machen kann???
danke
mfg Yosh
-
- Beiträge: 99
- Registriert: 27. Januar 2005 15:55
Ich nehme an mit Textbox ist ein QTextEdit gemeint...
MfG RD1978
Code: Alles auswählen
// Button mit Slot verbinden... z.B. im Konstruktor.
QObject::connect( myBtn, SIGNAL(clicked()), this, SLOT(mySlot()) );
// Slot der mit dem Button verbunden ist könnte so aussehen.
mySlot() {
// m_str ist ein private Member QString, dieser muß dann natürlich noch einen Wert bekommen,
// ob im Konstruktor oder einer anderen Methode oder hier oder wo auch immer...
this->myMethod( m_str );
}
// Methode die durch den Slot aufgerufen wird könnte so aussehen.
myMethod( const QString &str ) {
myTextEdit->setText( str );
}
-
- Beiträge: 13
- Registriert: 4. Juli 2007 09:00
- Wohnort: Wien
- Kontaktdaten:
Okay ich danke ersteinmal für die Mühe eurerseits. Jedoch finde ich es schade, dass es unter QT nicht mehr möglich ist, unter Anführungszeichen einer Methode beliebige Parameter zu übergeben. Denn wenn ich meine Vorstellung bezogen auf das Beispiel durchsetzten will kann ich nicht direkt in der Methode den Parameter mitliefern sondern muss immer zufor durch einen Zugriff auf die Variable den Text ändern aber egal.
Kann mir einer vielleicht erklären der genügend Hintergrundwissen besitzt, warum die Connect-Funktion so "bescheuert" gemacht ist, wegen gleichen Parametern und gleicher Anzahl. Ich finde einfach keine Erklärung für mich.
Danke an ALle
mfg Yosh
Kann mir einer vielleicht erklären der genügend Hintergrundwissen besitzt, warum die Connect-Funktion so "bescheuert" gemacht ist, wegen gleichen Parametern und gleicher Anzahl. Ich finde einfach keine Erklärung für mich.
Danke an ALle
mfg Yosh
naja, was heißt bescheuert?
Erstma müssen die Parameter nicht gleich sein, Signale können auch mehr Parameter haben wie Slots, dann werden die übrigen Parameter halt verworfen, wobei die Parameter aber vom gleichen Datentyp sein müssen, alles andere wäre auch unlogisch.
Bsp.:
Beim Aufruf der connect-Methode übergibst Du ja auch keine Werte sondern nur die Datentypen. Qt wartet dann im Hintergrund auf das Signal, welches beim Aufruf Werte mitgeliefert bekommt und führt halt dann den Slot mit diesen Werten zu diesem Zeitpunkt aus.
Hoffe das halbwegs richtig erklärt zu haben...
MfG RD1978
Erstma müssen die Parameter nicht gleich sein, Signale können auch mehr Parameter haben wie Slots, dann werden die übrigen Parameter halt verworfen, wobei die Parameter aber vom gleichen Datentyp sein müssen, alles andere wäre auch unlogisch.
Bsp.:
Code: Alles auswählen
// Das funktioniert
QObject::connect( obj, SIGNAL( mysig(int, char) ), this, SLOT( myslot(int) ) );
// Das funktioniert nicht
QObject::connect( obj, SIGNAL( mysig(int, char) ), this, SLOT( myslot(char) ) );
Hoffe das halbwegs richtig erklärt zu haben...
MfG RD1978