Zugriff auf MainWindow Elemente aus C++

Alles rund um die Programmierung mit Qt
Antworten
Pacemaker
Beiträge: 3
Registriert: 12. Oktober 2023 10:08

Zugriff auf MainWindow Elemente aus C++

Beitrag von Pacemaker »

Hello World ! Ich sitze an einem C++ Programm mit Qt MainWindow. Das Window enthält verschiedene Elemente: QLabel QTable QPushButton etc. Ich möchte gerne Properties ändern, ohne ein Event. Z.B. möchte ich den Anwender auf demLaufenden halten über den Stand des Programms. Dazu mochte ich in einigen Labels den Text ändern oder in der Tabelle Einträge einfügen/verändern/löschen. Konkret am Beispiel von 4 Labels, die ich Label1, Label2, Label3 und Label4 genannt habe: Wie kann ich diese Labels im MainWindow adressieren, um dann mit setText("abcd") die Änderungen vorzunehmen ?
Ich bin auch über Mail erreichbar (thomas.kolkmeyer@berlin.de).Wenn jemand in Berlin wohnt (so wie ich) kann er mich gerne auch anrufen (8470 8730).
Vielen Dank schon mal im Voraus !
helmut.jakoby
Beiträge: 19
Registriert: 17. Januar 2012 15:26
Kontaktdaten:

Re: Zugriff auf MainWindow Elemente aus C++

Beitrag von helmut.jakoby »

Ich verstehe nicht ganz, aber wenn Du z.B. ein QLabel als Attribut erzeugt hast, kannst Du doch darauf zugreifen.
Also irgendwo ein

Code: Alles auswählen

QLabel * Label1;
muss ja irgendwo erzeugt werden. Wenn also ein gültiger Zeiger, dann:

Code: Alles auswählen

Label1->setText("abcd");
Pacemaker
Beiträge: 3
Registriert: 12. Oktober 2023 10:08

Re: Zugriff auf MainWindow Elemente aus C++

Beitrag von Pacemaker »

Hallo Helmut,
es klappt nicht ! Weil ich nicht weiß, wo was zu stehen hat... Ich benutze den QtCreator und habe dort einen QLabel in mein MainWindow eingefügt, den ich Label1 genannt habe. Ich habe also die 3 Dateien mainwindow.h mainwindow.cpp und main.cpp Egal wie ich es anstelle, ich bekomme immer den Fehler, dass Label1 nicht definiert ist. Wo muss denn die Anweisung QLabel * Label1 stehen ? Benutzen will ich das setText im main.cpp. Geht das dort überhaupt ? Oder muss ich eine Funktion irgendwo (aber wo ?) definieren, die dann auf Label1 zugreift und das setText ausführt ?
Aber schon mal vielen Dank, dass du geantwortet hast ...
helmut.jakoby
Beiträge: 19
Registriert: 17. Januar 2012 15:26
Kontaktdaten:

Re: Zugriff auf MainWindow Elemente aus C++

Beitrag von helmut.jakoby »

Hallo Thomas,
Sorry für diese späte Rückmeldung,
hatte im Profil eine falsche Benachrichtigungs-Einstellung.
Wenn Du noch Hilfe brauchst, dann melde Dich gerne noch mal.
Mit der Aussage; "...QtCreator und habe dort einen QLabel in mein MainWindow eingefügt..." kann ich wenig anfangen. Benutzt Du auch den QtDesigner? Was meinst Du mit "einen QLabel in mein MainWindow eingefügt"?
Hast Du wirklich nur 3 Dateien "mainwindow.h mainwindow.cpp und main.cpp"? Hast Du deine Widgets per Hand zusammengebastelt oder doch den QtDesigner genutzt? Was ist mit einer UI-Datei? Muss ggf. Dein mainwindow von einer Gui-Klasse, erstellt vom QtDesigner erben? Wenn dem so ist, dann sind in dieser Klasse die Widgets wie QLabel zu finden und Du kannst einfach auf diese zugreifen, weil public.

Das war jetzt mal ins Blaue geschrieben. Wenn es so spät noch geholfen hat, würde mich das freuen.
Mit besten Grüßen
Helmut
Pacemaker
Beiträge: 3
Registriert: 12. Oktober 2023 10:08

Re: Zugriff auf MainWindow Elemente aus C++

Beitrag von Pacemaker »

Hallo Helmut, eigentlich habe ich das Projekt schon aufgegeben ! Ich hatte auch lange nicht ins Qt-Forum geschaut, deshalb erst heute eine Antwort auf deine Fragen. Aber eigentlich wäre es mir angenehm, wenn wir per Mail kommunizieren könnten, damit ich meine Unkenntnisse nicht vor breitem Publikum zeige. Meine Mailadresse ist thomas.kolkmeyer@berlin.de Aber ja, ich habe den QtDesigner benutzt. Mein Projekt (privat, nicht kommerziell) ist eigentlich ein sehr rechenintensives. Das mainwindow wird dazu benutzt, dem Anwender den Fortschritt anzuzeigen. Ich habe erstmal nur ein Testprogramm geschrieben, das nach dem Anklicken eines Buttons den Inhalt eines Labels oder eines Textarrays ändern soll. Es ließ sich aber lange nicht kompilieren und brachte dann zur Laufzeit Fehler. Mehr will ich jetzt gar nicht schreiben. Es wäre aber eine große Hilfe, wenn du dur das mal ansehen könntest. Vielleicht kannst du dich ja per Mail melden. Danke jedenfalls, dass du noch einmal geantwortet hast.
Antworten