Datenaustausch zwischen zwei Form-Klassen



  • Hallo zusammen 🙂

    ich habe folgendes Problem

    Ich habe zwei Form-Klassen angelegt. In diesen Klassen werden über die Konstruktoren die ganzen Widgets angelegt um z.B. einen Variablenpfad zum einlesen eingeben zu können.
    Mein Problem ist folgendes:
    In der einen Form wird der Pfad eingegeben. In der anderen will ich diesen in einem ListWidget darstellen und weiter programmtechnisch verarbeiten.
    Ich bekomme aber den String indem der Pfad gespeichert ist nicht zu der anderen Form...
    Ich wollte eine Datenaustauschklasse machen mit get und set Methoden die in beiden Forms aufgerufen werden können.
    Entweder funktioniert das Konzept allgemein nicht oder ich mache noch etwas falsch.
    Ich habe in beiden Forms die Klasse definiert aber ich glaube, dass immer unterschiedliche Instanzen der Klasse erzeugt werden oder so ähnlich. Dann wollte ich die Klasse global machen und mit extern kennzeichnen und in der anderen Form nur noch definieren aber das hat auch nicht funktioniert.

    Könnt ihr mir da weiterhelfen bzw. Ansätze nennen nach denen ich suchen muss?



  • P_Felso schrieb:

    oder ich mache noch etwas falsch.

    👍

    P_Felso schrieb:

    Ich habe in beiden Forms die Klasse definiert aber ich glaube, dass immer unterschiedliche Instanzen der Klasse erzeugt werden oder so ähnlich.

    Das macht so irgendwie keinen Sinn. Du beherrschst die Sprache nicht. Natürlich wird ständig irgendwas nicht funktionieren, wenn du gleich mit der GUI anfängst. Und du kannst es nicht lösen, weil du nicht mal die Sprache verstehst. Das ganze oder so ist viel zu vage, dazu kann man nichts sagen.
    Poste also zumindest ein bisschen Code.

    Grundlegender Ansatz. Eine Datenaustauschklasse brauchst du nicht mal unbedingt. Wenn du nur einen String übergeben willst, brauchst du dafür keine extra Klasse. Die Frage wäre, wie die Fenster miteinander interagieren. Macht das eine das andere modal auf und wartet darauf, dass es geschlossen wird? Dann wärs ganz einfach, einen getter einbauen und nach dem Schließen den Wert abfragen. Sind die gleichzeitig offen und wenn man den Pfad eingibt, soll im anderen Fenster sofort was aktualisiert werden? Wird etwas schwieriger, müsstest ein Signal definieren und die Fenster an einer geeigneten Stelle verbinden.



  • Danke für die Antwort erst einmal 🙂
    Wie du schon richtig erkannt hast bin ich noch Anfänger und versuche mich durchzukämpfen. Das mit der Datenaustauschklasse schien mir am sinnvollsten. Das Problem an der ganzen Sache ist, dass die GUI auf einem Siemens Programm (HMI) läuft. Ich weiß nicht inwiefern man da die übliche Qt Programmierung anwendet bzw. anwenden kann. Das mit der Klasse hat noch funktioniert und sieht so aus

    [#include <QtGui/QMessageBox>
    #include "slgfwhmidialog.h"
    #include "slgfwlabel.h"
    #include "slgfwlistwidget.h"
    #include "slfe_varadd_form.h"
    #include "slgfwcombobox.h"
    #include "slgrgrid.h"

    extern dataexchange exchange;
    ]

    danach kommen Konstruktor, Methoden usw.

    In der anderen Formklasse habe ich das ganze ohne "extern" geschrieben.

    Die Datenaustauschklasse hat bis jetzt nur einen String und zwei Methoden (get und set) aber da kommt noch was dazu.

    Die eine Formklasse setzt jetzt den Wert bei gedrücktem Button und die andere holt ihn wenn die Form aufgeblendet wird. Das ist der Plan.

    Wie würde man es denn sauber lösen ?



  • Schau mal bei Qt Signals und Slots nach.


Anmelden zum Antworten