QDialoge über singnal und Slot verbinden
QDialoge über singnal und Slot verbinden
Mein Problem ist die Verknüpfung zweier separat erstellter Dialogen miteinander zu verbinden.
In einem Dialog (Dialog1) ist ein Textfeld in dem ein Text steht, wenn ich eine Änderung an diesem Text mach "textchanged" dann soll er im Anderen Dialog (Dialog2) den Text ändern "settext".
Aber wie sage ich im connect Befehl, der in der cpp Datei von Dialog1 steht, das er den Text aus dem Textfeld von Dialog2 nehmen soll???
Danke euch schon mal ist ein super Forum!
HAbe leider keine konkrete Antwort dazu gefunden.
In einem Dialog (Dialog1) ist ein Textfeld in dem ein Text steht, wenn ich eine Änderung an diesem Text mach "textchanged" dann soll er im Anderen Dialog (Dialog2) den Text ändern "settext".
Aber wie sage ich im connect Befehl, der in der cpp Datei von Dialog1 steht, das er den Text aus dem Textfeld von Dialog2 nehmen soll???
Danke euch schon mal ist ein super Forum!
HAbe leider keine konkrete Antwort dazu gefunden.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Pointer = Zeiger. Wie man sowas bekommt sollte man schon wissenzer0 hat geschrieben:Also nur wie ich den Pointer mache? Bin ganz neu!![]()
Code: Alles auswählen
Dialog* dialog1;Code: Alles auswählen
dialog1 = new Dialog( liste, von, Argumenten );Code: Alles auswählen
Dialog2* dialog2 = new Dialog2( dialog1 );Ich hoffe das ist jetzt klarer und bringt dich ein bissl weiter. Les aber BITTE trotzdem noch etwas Einführendes / Weiterführendes zu C++. Pointer sind etwas so zentrales, dass man mit dem oben Gezeigten nicht weit kommt!
Grüße
Franz
Das verstehe ich!
Jedoch fehlt mir jetzt die Logik!
Aus der main starte ich Dialog und Dialog2
in dialog2 erstelle ich ein QLineEdit
So und auf dieses lineEdit möchte ich in der Dialog.cpp ungefähr so zugreifen:
Das Signal ist natürlich nur ein Bespiel mir ist klar das ich da irgendwie Zeiger anwenden muss, aber der Zeiger muss ja auf das Textfeld in dialog2 zeigen und nicht nur auf dialog2, oder sehe ich das falsch?
Ich weiß aber leider nicht wie ich einen solchen Zeiger machen soll. habe versucht das textfeld als public in die dialog2.h zu packen und drauf zuzugreifen, jedoch geht das irgendwie nicht er nimmt den Text nicht an!
Jedoch fehlt mir jetzt die Logik!
Aus der main starte ich Dialog und Dialog2
Code: Alles auswählen
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Dialog2 dialog2;
Dialog dialog;
lauftext.show();
textfeld.show();
return app.exec();
}
Code: Alles auswählen
Dialog2::Dialog2(QWidget *parent)
: QDialog(parent)
{
...
QLineEdit *lineEdit = new QLineEdit;
..
}
So und auf dieses lineEdit möchte ich in der Dialog.cpp ungefähr so zugreifen:
Code: Alles auswählen
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
...
connect(lineEdit, SIGNAL(textChanged(QString)),
label, SLOT(setText(QString)));
..
}Ich weiß aber leider nicht wie ich einen solchen Zeiger machen soll. habe versucht das textfeld als public in die dialog2.h zu packen und drauf zuzugreifen, jedoch geht das irgendwie nicht er nimmt den Text nicht an!
1. Was sind 'lauftext' und 'textfeld'?
2. Vorschlag:
Was das werden soll, wenns fertig ist, will sich mir allerdings auch jetzt noch nicht erkennen lassen...
Gruß,
/dev
2. Vorschlag:
Code: Alles auswählen
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Dialog2 dialog2;
Dialog dialog;
dialog2.setDialog1(dialog);
dialog.setDialog2(dialog2);
[...]
return app.exec();
} Gruß,
/dev
Hubs mein Fehler.
lauftext ist dialog und textfeld ist dialog2.
Folgendes: Ich habe einen Lauftext mit dem wigglyWidget aus den Beispielen erstellt. Ursprünglich war das Textfeld im gleichen Objekt enthalten, sodass der Connect ohne Probleme funktionierte. Da ich den Lauftext über den Desktop laufen lassen will und den Text separat ändern möchte, habe ich einen zweiten Dialog erschaffen.
Also ich möchte wie schon erwähnt in dialog2 den Text eingeben und "on the fly" in dialog anpassen.
Ich könnte ja auch einfach zwei Signale verbinden, jedoch dachte ich es wäre lehrreicher (Anfänger
),wenn ich das mal über Pointer realisiere. Vielleicht checke ich dann auch mal endlich dieses Prinzip.
Was mich jetzt völlig aus der Bahn wirft ist :
Nun ja jetzt wisst ihr was ich machen will! Wenn sich das nicht mit Pointern realisieren lässt, dann mach ich das mit ner Textdatei, aber das ist eigentlich nicht das was ich machen wollte!
Hat jemand eine Idee?
Ich Danke euch allen für eure Antworten!
lauftext ist dialog und textfeld ist dialog2.
Folgendes: Ich habe einen Lauftext mit dem wigglyWidget aus den Beispielen erstellt. Ursprünglich war das Textfeld im gleichen Objekt enthalten, sodass der Connect ohne Probleme funktionierte. Da ich den Lauftext über den Desktop laufen lassen will und den Text separat ändern möchte, habe ich einen zweiten Dialog erschaffen.
Also ich möchte wie schon erwähnt in dialog2 den Text eingeben und "on the fly" in dialog anpassen.
Ich könnte ja auch einfach zwei Signale verbinden, jedoch dachte ich es wäre lehrreicher (Anfänger
Was mich jetzt völlig aus der Bahn wirft ist :
Code: Alles auswählen
dialog2.setDialog1(dialog);
dialog.setDialog2(dialog2); Hat jemand eine Idee?
Ich Danke euch allen für eure Antworten!
Code: Alles auswählen
dialog2.setDialog1(dialog);
dialog.setDialog2(dialog2);
Code: Alles auswählen
QLineEdit *edit1 = dialog1.getLineEdit();
QLineEdit *edit2 = dialog2.getLineEdit();
connect(edit1,......,edit2,....)
Ich vermute zwar, dass du das im Code anderst gemacht hast, weise aber doch noch auf den Memory-Leak hin:
Code: Alles auswählen
{
QLineEdit *lineEdit = new QLineEdit;
}
Irgendwie verstehe ich das nicht!
Ich soll also in der main die so bekannt machen? ers düfte ja eigentlcih reichen, wenn ich nur den LineEdit von dialog2 bekannt mache, damit ich ihn in dialog verwenden kann oder ? Aber wo mach ich das genau bekannt? ich bin jetzt voll durcheinander!
Das kann doch nicht so schwer sein bin ich so doof ?
Code: Alles auswählen
QLineEdit *edit1 = dialog1.getLineEdit();
QLineEdit *edit2 = dialog2.getLineEdit();
connect(edit1,......,edit2,....) Das kann doch nicht so schwer sein bin ich so doof ?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ich würde sagen - fange lieber erstmal mit den Tutorial und Beispielen an.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung