Methode um Werte in Textdateien zu übergeben
Methode um Werte in Textdateien zu übergeben
Hi,
ich bräuchte eine Methode um einen Wert aus einem LineEditWidget in eine Textdatei zu übergeben, d.h. dass z.B. bei Klick auf einen PushButton mehrere Werte aus verschiedenen LineEdits in verschiedene Textdateien geschrieben werden sollen bzw. alte Werte überschreiben sollen. Den Button und die LineEdits kann ich ja einfach mit einer connect Methode verbinden, nun bräuchte ich halt noch wie gesagt die Methoden um die Werte an die jeweiligen Dateien zu übergeben. Hat vielleicht jemand einen Link in die Qt Dokumentation zu der/den entsprechenden Methode(n)?
Meiner Auffassung nach ist diese Lösung ja sehr unprofessioniell, da ich die Werte auch noch an die richtigen Stellen der Textdatei schreiben muss und die alten Werte unbedingt überschrieben werden müssen. Wenn jemand eine wirklich gute Lösung für dieses Problem nennen kann (weil er sich vielleicht schonmal mit etwas ähnlichem befasst hat etc.), wäre das natürlich noch viel besser...
Danke schonmal für die Antworten.
ich bräuchte eine Methode um einen Wert aus einem LineEditWidget in eine Textdatei zu übergeben, d.h. dass z.B. bei Klick auf einen PushButton mehrere Werte aus verschiedenen LineEdits in verschiedene Textdateien geschrieben werden sollen bzw. alte Werte überschreiben sollen. Den Button und die LineEdits kann ich ja einfach mit einer connect Methode verbinden, nun bräuchte ich halt noch wie gesagt die Methoden um die Werte an die jeweiligen Dateien zu übergeben. Hat vielleicht jemand einen Link in die Qt Dokumentation zu der/den entsprechenden Methode(n)?
Meiner Auffassung nach ist diese Lösung ja sehr unprofessioniell, da ich die Werte auch noch an die richtigen Stellen der Textdatei schreiben muss und die alten Werte unbedingt überschrieben werden müssen. Wenn jemand eine wirklich gute Lösung für dieses Problem nennen kann (weil er sich vielleicht schonmal mit etwas ähnlichem befasst hat etc.), wäre das natürlich noch viel besser...
Danke schonmal für die Antworten.
Gruß
TerraG
TerraG
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Methode um Werte in Textdateien zu übergeben
Siehe QFile
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Methode um Werte in Textdateien zu übergeben
Hast du schonma dran gedacht eine *.ini zu erstellen?
Dafür gibt es mit include "windows.h" bereits Funktionen, die unter einer "Section" einer Variable "Key" einen Wert "Value" zuteilen. Damit ist überschrieben und auslesen natürlich geschenkt
Code für Schreiben:
Dafür gibt es mit include "windows.h" bereits Funktionen, die unter einer "Section" einer Variable "Key" einen Wert "Value" zuteilen. Damit ist überschrieben und auslesen natürlich geschenkt
Code für Schreiben:
Code: Alles auswählen
WritePrivateProfileString("Section","Key","Value","Dateiname.ini");
Re: Methode um Werte in Textdateien zu übergeben
Wenn schon mit ini-Datei, dann mit QSettings statt windows-api!
Re: Methode um Werte in Textdateien zu übergeben
Hi,
ich hatte mir jetzt überlegt, dass ich das in etwa so mache:
1. Ich ordne den LineEdit Widgets double Variablen zu.
2.Dann führe ich eine Art Methode Createfile() mit bestimmtem Text (String) und der double Variable an manchen Stellen aus.
Ist das so möglich und welche Methoden bräuchte ich da?
Was hat es genau mit dieser Methode auf sich bzw. wo kann ich das nachlesen?
Gruß
TerraG
ich hatte mir jetzt überlegt, dass ich das in etwa so mache:
1. Ich ordne den LineEdit Widgets double Variablen zu.
2.Dann führe ich eine Art Methode Createfile() mit bestimmtem Text (String) und der double Variable an manchen Stellen aus.
Ist das so möglich und welche Methoden bräuchte ich da?
Code: Alles auswählen
WritePrivateProfileString("Section","Key","Value","Dateiname.ini");
Gruß
TerraG
Gruß
TerraG
TerraG
Re: Methode um Werte in Textdateien zu übergeben
Es kommt darauf an was du speichern willst.
Willst du Text speichern? -> QFile+QTextStream
Willst du Binärdaten speichern? -> QFile + QDataStream
Key/Value-Paare? -> QSettings
Mit QSettings wird (z.B.) eine Text-Datei erzeugt, die in etwa so aussieht:
Was du brauchst ist setValue() und value() von QSettings und einige "toDatentyp()-Funktionen" von QVariant. Mehr dazu in der Doku!
Edit: Lass das mit den Funktionen aus der windows.h! Mit QSettings funktioniert das ganze os-unabhängig!
Willst du Text speichern? -> QFile+QTextStream
Willst du Binärdaten speichern? -> QFile + QDataStream
Key/Value-Paare? -> QSettings
Mit QSettings wird (z.B.) eine Text-Datei erzeugt, die in etwa so aussieht:
Code: Alles auswählen
[General]
ADoubleValue=1.0
AString=text
[Special]
SpecialString=imsospecial
Edit: Lass das mit den Funktionen aus der windows.h! Mit QSettings funktioniert das ganze os-unabhängig!
Re: Methode um Werte in Textdateien zu übergeben
QSettings ist ntürlich besser!
Bei windows.h ist einfach stumpfer
Bei windows.h ist einfach stumpfer
Re: Methode um Werte in Textdateien zu übergeben
Hi nochmal,
also ich weiss nicht recht ob das die richtigen Methoden/Klassen sind die Du mir da gegeben hast.
QSettings: Ermöglicht das Speichern der Anwendungs/Gui Einstellungen
QVariant: Anlegen von QVariant Objekten, die man dann u.U. in andere Variablen konvertieren kann (?)
Noch mal kurz zu meinem Projekt:
Ich habe einige LineEdit Widgets (Objekte) in meiner GUI in die immer ZAHLEN, meist Typ double eingetragen werden. Den Inhalt jedes LineEdit Widgets würde ich gerne je unter einer anderen globalen double Variablen meiner Klasse abspeichern, da ich diese für weitere Methoden benötige.
Ob die Anwendung/GUI ihre letzten Einstellungen speichert (QSettings) ist mir völlig egal und das mit QVariant check ich nicht ganz xD.
also ich weiss nicht recht ob das die richtigen Methoden/Klassen sind die Du mir da gegeben hast.
QSettings: Ermöglicht das Speichern der Anwendungs/Gui Einstellungen
QVariant: Anlegen von QVariant Objekten, die man dann u.U. in andere Variablen konvertieren kann (?)
Noch mal kurz zu meinem Projekt:
Ich habe einige LineEdit Widgets (Objekte) in meiner GUI in die immer ZAHLEN, meist Typ double eingetragen werden. Den Inhalt jedes LineEdit Widgets würde ich gerne je unter einer anderen globalen double Variablen meiner Klasse abspeichern, da ich diese für weitere Methoden benötige.
Ob die Anwendung/GUI ihre letzten Einstellungen speichert (QSettings) ist mir völlig egal und das mit QVariant check ich nicht ganz xD.
Gruß
TerraG
TerraG
Re: Methode um Werte in Textdateien zu übergeben
Vorher wolltest du in eine Datei schreiben, jetzt sollen es globale Variablen sein.
Die Frage die sich stellt:
WAS willst du erreichen?
Für mich hört sich das alles nämlich recht fragwürdig an. Globale Variablen, nur um den aktuellen State eines lokalen LineEdits zu speichern? Zweifelhaft.
Des weiteren: Für Zahlen gibt es Q[Double]SpinBox.
Die Frage die sich stellt:
WAS willst du erreichen?
Für mich hört sich das alles nämlich recht fragwürdig an. Globale Variablen, nur um den aktuellen State eines lokalen LineEdits zu speichern? Zweifelhaft.
Des weiteren: Für Zahlen gibt es Q[Double]SpinBox.
Re: Methode um Werte in Textdateien zu übergeben
Also die Idee aus meinem ersten Beitrag hat sich erledigt, da das zu fehleranfällig gewesen wäre. Erreichen will ich folgendes:
Die Eingabe in einem LineEdit Widget unter einer Variablen abspeichern. Diese Variable benötige ich um in einer anderen Methode eine Datei mit bekanntem Inhalt/Aufbau zu erstellen, in welchen ich an eine gewisse Stelle die Variable einsetzen muss. Damit habe ich "mit meiner GUI" eine Textdatei erstellt, die ein anderes Programm (mit welchem ich arbeite) aufgrund des AUfbau/Inhalts problemlos auslesen kann und sich so ausführen lässt.
Das sehe ich soweit als einfachste Lösung um mit den Kommazahlen aus den LineEdit Widgets entsprechende Textadateien zu erstellen. Des weiteren ist dies wohl auch viel weniger fehleranfällig als meine erste Idee (also vergessen wir mal die erste Idee ).
Die Eingabe in einem LineEdit Widget unter einer Variablen abspeichern. Diese Variable benötige ich um in einer anderen Methode eine Datei mit bekanntem Inhalt/Aufbau zu erstellen, in welchen ich an eine gewisse Stelle die Variable einsetzen muss. Damit habe ich "mit meiner GUI" eine Textdatei erstellt, die ein anderes Programm (mit welchem ich arbeite) aufgrund des AUfbau/Inhalts problemlos auslesen kann und sich so ausführen lässt.
Das sehe ich soweit als einfachste Lösung um mit den Kommazahlen aus den LineEdit Widgets entsprechende Textadateien zu erstellen. Des weiteren ist dies wohl auch viel weniger fehleranfällig als meine erste Idee (also vergessen wir mal die erste Idee ).
Gruß
TerraG
TerraG
Re: Methode um Werte in Textdateien zu übergeben
Wie gesagt: globale Variablen verwenden, um den State lokaler Objekte zu speichern ist nix gut.
Du hast bisher noch kein Wort darüber verloren, wie denn die UI mit der ominösen anderen Methode zusammenhängt. Wenn die ein Member deines MainWindow ist -> wo ist das Problem?
Ansonsten kannst du beliebig Objekte rumreichen und darauf Methoden aufrufen.
Ich seh das Problem nicht.
Du hast bisher noch kein Wort darüber verloren, wie denn die UI mit der ominösen anderen Methode zusammenhängt. Wenn die ein Member deines MainWindow ist -> wo ist das Problem?
Ansonsten kannst du beliebig Objekte rumreichen und darauf Methoden aufrufen.
Ich seh das Problem nicht.
Re: Methode um Werte in Textdateien zu übergeben
Ok, dass erkenne ich natürlich an, aber was heisst denn genau State, denn ich will ja nicht alle Daten des Objektes wie Breite, Länge, Farbe etc. speichern wenn nicht zwingend notwendig, sondern eben nur die Eingabe im LineEdit Widget.Wie gesagt: globale Variablen verwenden, um den State lokaler Objekte zu speichern ist nix gut.
Die andere Methode die die Datei erstellt, gehört natürlich auch zum Projekt. Die fehlt mir aber auch noch.Du hast bisher noch kein Wort darüber verloren, wie denn die UI mit der ominösen anderen Methode zusammenhängt. Wenn die ein Member deines MainWindow ist -> wo ist das Problem?
Jetzt mal kurz und bündig:
Ich will eine Datei erstellen mit konstantem Inhalt, abgesehen davon das an eine Stelle der Datei der Wert aus dem LineEdit muss. Mit welchen Methoden kann ich das bewerkstelligen bzw. zu welcher Klasse gehören die Methoden?
Das ist was ich wissen möchte und mehr nicht. Der Name und der Aufbau der Datei ist fest,d.h. ich muss den vorgeben können und den Wert der Variablen an die richtige Stelle setzen können.
Das Programm welches diese Datei ausliest hat mit meiner UI dann eigentlich nicht mehr viel zu tun, abgesehen davon, dass ich das Programm aus meiner UI starte, aber erstmal eines nach dem anderen.
Kann mir jemand sagen mit welchen Methoden ich das bewerkstelligen kann?
Gruß
TerraG
TerraG
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Methode um Werte in Textdateien zu übergeben
Den Wert aus dem LineEdit kann man z.B. mit QLineEdit::text() auslesen. Eine (Text)Datei kann man mittels QFile und/oder QTextStream erzeugen. Der Rest ist C++ Grundlagen...
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Methode um Werte in Textdateien zu übergeben
Hab grad ein kleines Problem. Eine meiner LineEdits hat den Namen "pEingabe"
Nun habe ich mit dem Code
nur zu Testzwecken versucht den Text im LineEdit voreinzustellen und bekomme aber leider die Fehlermeldung
Der Kompiler gibt also aus, dass pEingabe nicht definiert ist, wobei ich halt nur sagen kann, dass es in der Basisklasse definiert ist. Was müsste ich da ändern?
Nun habe ich mit dem Code
Code: Alles auswählen
pEingabe->setText("Hello World");
Code: Alles auswählen
Führe Build-Schritte für Projekt KühniGUI aus...
Unveränderte Konfiguration, qmake-Schritt wird übersprungen.
Starte "/usr/bin/make" -w
make: Gehe in Verzeichnis '/home/frighter/Arbeitsfläche/KühniGUIquelltext'
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o main.o main.cpp
main.cpp: In Funktion »int main(int, char**)«:
main.cpp:10:4: Fehler: »pEingabe« wurde in diesem Gültigkeitsbereich nicht definiert
make: *** [main.o] Fehler 1
make: Verlasse Verzeichnis '/home/frighter/Arbeitsfläche/KühniGUIquelltext'
Der Prozess "/usr/bin/make" wurde mit dem Rückgabewert 2 beendet.
Fehler beim Erstellen des Projekts KühniGUI(Ziel: Desktop)
Bei der Ausführung von Build-Schritt 'Make'
Gruß
TerraG
TerraG