Hallo zusammen,
ich benötige noch einmal Eure Hilfe. Als Qt Anfänger, stehe ich vor dem nächsten Stein, bei dem ich momentan nicht weiter komme:
Und zwar versuche ich gerade von einer selbst kreierten Klasse auf ein Objekt des UI zu zugreifen. In der von Qt kreierten MainWindow Klasse ist das kein Problem! Hier kann ich zum Beispiel mit "ui.namedesobjektes.settext("test")" ohne Probleme Sachen ausgeben.
In meiner selbst kreierten Klasse habe ich nun in der Header Datei auch das selbe wie in der MainWindow rein geschrieben "UI::MainWindow *ui".
Jetzt bekomme ich in meiner Klasse bei Eingabe von ui.objektnam...... zwar die Funktionen zu Auswahl alle angezeigt, jedoch ohne Ergebnis. Sobald ich das Programm starte, dauert es ca. 3 Sekunden, woraufhin es dann mit der Meldung "Programm ist abgestürzt" abstürzt.
Kann mir da jemand kurzfristig helfen?
Vielen Dank und beste Grüße
Kevin
Von Klassen auf Objekte des UI zugreifen
-
- Beiträge: 149
- Registriert: 1. April 2009 19:25
Re: Von Klassen auf Objekte des UI zugreifen
mit "UI::MainWindow *ui" in deiner eigenen Klasse hast du nur die Variable für einen ZEIGER auf ui-Objekt angelegt aber nicht bestimmt auf welches ui-Objekt es zeigen soll.
Wenn du im MainWindow deine Klasse/Objekt verwendest, dann kannst du dort den ZEIGER festlegen.
void MainWindow::EineFunktion()
{
MeineKlasse meinObjekt; //ein Objekt von deiner Klasse wird erzeugt
meinObjekt.ui = ui; //ui deines Objekts bekommt den Zeiger auf MainWindow::ui
}
Wenn du im MainWindow deine Klasse/Objekt verwendest, dann kannst du dort den ZEIGER festlegen.
void MainWindow::EineFunktion()
{
MeineKlasse meinObjekt; //ein Objekt von deiner Klasse wird erzeugt
meinObjekt.ui = ui; //ui deines Objekts bekommt den Zeiger auf MainWindow::ui
}
Re: Von Klassen auf Objekte des UI zugreifen
Erst einmal vielen Dank für Deine schnelle Antwort.
Verstehe ich aber leider noch nicht ganz genau.
Wenn ich folgendes setze, habe ich doch die Klasse und auch das Objekt angesprochen, oder?!
Ui::MainWindow test;
test.listbrowser.setText("test")
// listbrowser = Objekt auf dem UI
Es gibt also u.a. die Formulardatei mainwindow.ui
In meiner selbst erstellten Klase mytimer.cpp möchte ich die Möglichkeit haben auf das Objekt listbrowser in der Formulardatei eine Ausgabe zu tätigen.
Vielleicht hilft das nochmal zum verständnis???
LG
Kevin
Verstehe ich aber leider noch nicht ganz genau.
Wenn ich folgendes setze, habe ich doch die Klasse und auch das Objekt angesprochen, oder?!
Ui::MainWindow test;
test.listbrowser.setText("test")
// listbrowser = Objekt auf dem UI
Es gibt also u.a. die Formulardatei mainwindow.ui
In meiner selbst erstellten Klase mytimer.cpp möchte ich die Möglichkeit haben auf das Objekt listbrowser in der Formulardatei eine Ausgabe zu tätigen.
Vielleicht hilft das nochmal zum verständnis???
LG
Kevin
-
- Beiträge: 149
- Registriert: 1. April 2009 19:25
Re: Von Klassen auf Objekte des UI zugreifen
Mach das mal am besten mit Signal-Slot!
void MainWindow::SetzeText( QString neuerText )
{
ui.listbrowser.setText( neuerText );
}
in der MainWindow-Header die Funktion "SetzeText" als Slot deklarieren.
In MyTimer-Header deklarierst du "MainWindow_SetzeText( QString neuerText );" als Signal und kannst dann überall in MyTimer einfach folgendes schreiben:
"emit MainWindow_SetzeText("Hallo");".
Damit das so funktioniert musst du irgendwo einmal das Signal und den Slot mittels "connect" verbinden.
Siehe "Signal Slot" in Qt-Doku.
void MainWindow::SetzeText( QString neuerText )
{
ui.listbrowser.setText( neuerText );
}
in der MainWindow-Header die Funktion "SetzeText" als Slot deklarieren.
In MyTimer-Header deklarierst du "MainWindow_SetzeText( QString neuerText );" als Signal und kannst dann überall in MyTimer einfach folgendes schreiben:
"emit MainWindow_SetzeText("Hallo");".
Damit das so funktioniert musst du irgendwo einmal das Signal und den Slot mittels "connect" verbinden.
Siehe "Signal Slot" in Qt-Doku.