Signal - Slot
Signal - Slot
Hallo,
a)
man kann über Signal/Slot dinge mit einander verbinden über connect.
Also ich hab einen PushButton und möchte wenn er gedrückt wird eine LineEdit auslesen und als QString speichern.
Das ist weiter kein problem. Aber wie teile ich jetzt der Methode(in der sich der Pushbutton befindet mit), dass er z.b. wenn LineEdit leer ist nicht das Fenster schließen soll? Kann man dem PushButton mitteilen, ob es geklappt hat? oder brauch ich da was anderes als connect.
b)
Ich hab eine TabWidget und ich möchte z.b. wenn man oben auf den Tabnamen klickt, dass sich der Name in ein LineEdit verändert und man einen neuen Namen eingeben kann.
Kann man so was hinbekommen?
a)
man kann über Signal/Slot dinge mit einander verbinden über connect.
Also ich hab einen PushButton und möchte wenn er gedrückt wird eine LineEdit auslesen und als QString speichern.
Das ist weiter kein problem. Aber wie teile ich jetzt der Methode(in der sich der Pushbutton befindet mit), dass er z.b. wenn LineEdit leer ist nicht das Fenster schließen soll? Kann man dem PushButton mitteilen, ob es geklappt hat? oder brauch ich da was anderes als connect.
b)
Ich hab eine TabWidget und ich möchte z.b. wenn man oben auf den Tabnamen klickt, dass sich der Name in ein LineEdit verändert und man einen neuen Namen eingeben kann.
Kann man so was hinbekommen?
Entweder ist das Verhalten OK, da der Code das so vorgibt, oder dein Code macht Murks und das Programm stürzt ab. Oder es fliegt irgendwo eine Exception.Nvidia hat geschrieben:das fenster nicht schließen soll.
In allen drei Fällen geht dein Fenster zu. Die Ursache ist nie durch Wahrsagen festzustellen.
Wir haben bisher keinen Code gesehen, nur eine vage Beschreibung, bei der ich mir eigentlich vorgenommen hab nicht zu antworten - ich habs einfach nicht wirklich gepeilt was du treibst
aha...Aber wie teile ich jetzt der Methode(in der sich der Pushbutton befindet mit),
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
Grafikkarte hat geschrieben:aber wie kann ich ihm sagen, dass er, wenn beim auslesen was nicht passt, das fenster nicht schließen soll.
Code: Alles auswählen
if ( LineEdit hat passenden Inhalt )
schliessen
else
nicht schliessenvoid MainWindow::test()
{
createButton = new QPushButton(tr("&Create"));
connect(createButton, SIGNAL(clicked()), this, SLOT(setTapName()));
connect(createButton, SIGNAL(clicked()), w2, SLOT(close()));
}
void MainWindow::setTapName()
{
QString k;
k = lineEdit->text();
createTab(k);
}
void MainWindow::createTab(QString Q)
{
}
{
createButton = new QPushButton(tr("&Create"));
connect(createButton, SIGNAL(clicked()), this, SLOT(setTapName()));
connect(createButton, SIGNAL(clicked()), w2, SLOT(close()));
}
void MainWindow::setTapName()
{
QString k;
k = lineEdit->text();
createTab(k);
}
void MainWindow::createTab(QString Q)
{
}
Kannst du nicht einfach deinen kompletten Code so weit reduzieren, dass dein Problem gerade noch auftritt und sich das Projekt kompilieren lässt, dann tut man sich leichter.
Wenn das nicht geht, poste doch die entscheidenden Teile, dazu gehört in jedem Fall Klassendefinition und Konstruktordefinition. Ich denke ich weiß wo das Problem sein könnte, aber Raten macht mir heute keinen Spaß.
Wenn das nicht geht, poste doch die entscheidenden Teile, dazu gehört in jedem Fall Klassendefinition und Konstruktordefinition. Ich denke ich weiß wo das Problem sein könnte, aber Raten macht mir heute keinen Spaß.
Leider weiß ich nicht was "w2" oder "das Fenster" sind. Genauso wenig ob er nicht im Konstruktor ein weiteres "QLineEdit* lineEdit" erstellt, und damit den Member "lineEdit" uninitialisiert lässt - greif drauf zu und es knallt.upsala hat geschrieben:@franzf: Doppelter sinnloser connect
Wenn w2 natürlich "das Fenster" ist, geb ich dir Recht
ok
w2 = Widget das Fenster, welches geöffnet wurde
this = Hauptfenster
lineEdit ist ein LineEdit auf w2
PushButton ist auch auf w2
Wenn der Button gedrückt wird, wird setTap() aufgerufen& das fenster geschlossen.
in setTap könnte ich nach Troll.Soft das testen ob das leer ist. Aber wie sag ich der methode, die setTap aufruft, dass er leer ist und nicht das fenster schließen soll?
w2 = Widget das Fenster, welches geöffnet wurde
this = Hauptfenster
lineEdit ist ein LineEdit auf w2
PushButton ist auch auf w2
Wenn der Button gedrückt wird, wird setTap() aufgerufen& das fenster geschlossen.
in setTap könnte ich nach Troll.Soft das testen ob das leer ist. Aber wie sag ich der methode, die setTap aufruft, dass er leer ist und nicht das fenster schließen soll?