[gelöst] QFile, QFileDialog, QDataStream
[gelöst] QFile, QFileDialog, QDataStream
Hallo,
ich muss von einer Datei Werte einlesen und ein Array der Werte zurückgeben. Wenn ich einen PushButton drücke, soll sich ein Fenster öffnen von dem ich eine Datei auswählen kann,aber es soll nur der Pfad der Datei zurückgegeben werden und nicht die Datei öffnen.
Ich weiss nur dass ich mit QFile, QFileDialog und QDataStram arbeiten muss.
Ich habe mir viele Beispiele angeguck, doch ich werde nicht schlau daraus, weil es jedes mal anders gemacht wird.
Kann mir jemand einen Ansat geben. Danke.
lg
nici
ich muss von einer Datei Werte einlesen und ein Array der Werte zurückgeben. Wenn ich einen PushButton drücke, soll sich ein Fenster öffnen von dem ich eine Datei auswählen kann,aber es soll nur der Pfad der Datei zurückgegeben werden und nicht die Datei öffnen.
Ich weiss nur dass ich mit QFile, QFileDialog und QDataStram arbeiten muss.
Ich habe mir viele Beispiele angeguck, doch ich werde nicht schlau daraus, weil es jedes mal anders gemacht wird.
Kann mir jemand einen Ansat geben. Danke.
lg
nici
Zuletzt geändert von nici am 28. November 2008 09:58, insgesamt 1-mal geändert.
Hmm mir fällt nichts ein ^^
also anfangen würde ich mit einem Button den du mit einer Methode connectest.
in der Methode nimmst du dann einen QFileDialog zur Hand.
zum Beispiel so
Danach musst du dann entsprechend die Datei öffnen und auslesen. Wobei dir da die beiden anderen Klassen wohl weiterhelfen werden.
Gruß jerry42
in der Methode nimmst du dann einen QFileDialog zur Hand.
zum Beispiel so
Code: Alles auswählen
QString dateipfad ( QFileDialog::getOpenFileName( this ) );Gruß jerry42
hallo,
also ich habe ein Widget mit nur einem einzigen Button erstellt. Der Button heisst loadFile. Jetzt will ich wenn ich den Button drücke, dass ich ein Fenster öffnet aus dem ich eine Datei auswählen kann, und mir dann der Pfad der Datei angezeigt wird.
Bis jetzt habe ich:
File.cpp
und
File.h
so und jetzt weiss ich erstens nicht ob das was ich da gecoded habe ganz richtig ist oder nicht, und zweitens weiss ich nicht wie ich weiter machen soll.
lg
nici
also ich habe ein Widget mit nur einem einzigen Button erstellt. Der Button heisst loadFile. Jetzt will ich wenn ich den Button drücke, dass ich ein Fenster öffnet aus dem ich eine Datei auswählen kann, und mir dann der Pfad der Datei angezeigt wird.
Bis jetzt habe ich:
File.cpp
Code: Alles auswählen
#include "File.h"
File::File(QWidget *parent)
:QWidget(parent)
{
setupUi(this);
connect(loadFile, SIGNAL(clicked()),
this, SLOT(openWindow()));
QStirng wayToData(QFieDialog::getOpenFileName(this));
}
void File::loadFile(){
QString filename=QFileDialog::getOpenFileName(this);
QFile file(filename);
if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
pushButton->setPlainText(QString::fromUtf8(file.readAll()));
mFilePath=filename;
statusBar()->schowMessage(tr"(Datei erfolgreich geladen"),3000);
}
}
void File::saveFile(const QString &name){
QFile file(name);
if(file.open(QIODevice::WriteOnly|QIODevice::Text)){
file.write(textEdit->toPlainText().toUtf8());
statusBar()->showMessage(tr("Datei erfolgreich gespeichert"),3000);
}
}
void File::saveFileAs() {
mFilePath=QFileDialog::getSaveFileName(this);
if(mFilePath.isEmpty())
return;
saveFile(mFilePath);
}File.h
Code: Alles auswählen
#ifndef FILE_H
#define FILE_H
#include "ui_File.h"
class File : public QWidget , private Ui::File
{
Q_OBJECT
public:
File(QWidget *parent=0);
public slots:
void openWindow();
};
#endif
lg
nici
Hmm mir fällt nichts ein ^^
ok ich hatte ein paar Schreibfehler, hab die Korrigiert und die Fehler sind weniger geworden.
hier noch mal die File.cpp
und hier die Fehlermeldungen:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o File.o File.cpp
In file included from File.cpp:6:
File.h:4:21: error: ui_File.h: Datei oder Verzeichnis nicht gefunden
File.h:6: error: 'Ui' has not been declared
File.h:6: error: expected `{' before 'File'
File.h:6: error: invalid function declaration
File.cpp:9: error: invalid use of undefined type 'class File'
File.h:6: error: forward declaration of 'class File'
File.cpp: In constructor 'File::File(QWidget*)':
File.cpp:12: error: 'setupUi' was not declared in this scope
File.cpp:14: error: 'loadFile' was not declared in this scope
File.cpp:17: error: invalid conversion from 'File* const' to 'QWidget*'
File.cpp:17: error: initializing argument 1 of 'static QString QFileDialog::getOpenFileName(QWidget*, const QString&, const QString&, const QString&, QString*, QFlags<QFileDialog::Option>)'
File.cpp:17: confused by earlier errors, bailing out
make: *** [File.o] Fehler 1
lg
nici
hier noch mal die File.cpp
Code: Alles auswählen
#include <QFile>
#include <QString>
#include <QIODevice>
#include <QFileDialog>
#include "File.h"
File::File(QWidget *parent)
:QWidget(parent)
{
setupUi(this);
connect(loadFile, SIGNAL(clicked()),
this, SLOT(loadFile()));
QString wayToData(QFileDialog::getOpenFileName(this));
}
void File::loadFile(){
QString filename=QFileDialog::getOpenFileName(this);
QFile file(filename);
if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
pushButton->setPlainText(QString::fromUtf8(file.readAll()));
mFilePath=filename;
statusBar()->schowMessage(tr"(Datei erfolgreich geladen"),3000);
}
}
void File::saveFile(const QString &name){
QFile file(name);
if(file.open(QIODevice::WriteOnly|QIODevice::Text)){
file.write(textEdit->toPlainText().toUtf8());
statusBar()->showMessage(tr("Datei erfolgreich gespeichert"),3000);
}
}
void File::saveFileAs() {
mFilePath=QFileDialog::getSaveFileName(this);
if(mFilePath.isEmpty())
return;
saveFile(mFilePath);
}g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o File.o File.cpp
In file included from File.cpp:6:
File.h:4:21: error: ui_File.h: Datei oder Verzeichnis nicht gefunden
File.h:6: error: 'Ui' has not been declared
File.h:6: error: expected `{' before 'File'
File.h:6: error: invalid function declaration
File.cpp:9: error: invalid use of undefined type 'class File'
File.h:6: error: forward declaration of 'class File'
File.cpp: In constructor 'File::File(QWidget*)':
File.cpp:12: error: 'setupUi' was not declared in this scope
File.cpp:14: error: 'loadFile' was not declared in this scope
File.cpp:17: error: invalid conversion from 'File* const' to 'QWidget*'
File.cpp:17: error: initializing argument 1 of 'static QString QFileDialog::getOpenFileName(QWidget*, const QString&, const QString&, const QString&, QString*, QFlags<QFileDialog::Option>)'
File.cpp:17: confused by earlier errors, bailing out
make: *** [File.o] Fehler 1
lg
nici
Hmm mir fällt nichts ein ^^
Was sollen wir denn dazu schreiben? Wir erwarten, dass du dir (nicht uns!) Fragen stellst wie "wo liegt denn diese Datei?", falls nicht auffindbar "welche Quelle hat die Datei "ui_File.h (z.B. UI-Ressourcen?)" und falls aus der Quelle (z.B. "File.ui") diese Header-Datei _nicht_ generiert wird "wie generiert man aus ui-Dateien Header-Dateien?"... und danach in die Doku schaust.... Falls dann was nicht klar ist, erwarten wir konkrete Fragen mit dem Hinweis, was du bereits versucht hast.File.h:4:21: error: ui_File.h: Datei oder Verzeichnis nicht gefunden
hmm den Fehler mit der ui-Datei hab ich behoben. Jetzt tauchen aber andere Fehler auf. Warum wird gesagt, dass statusBar nicht deklariert ist?
lg
nici
Code: Alles auswählen
#include <QFile>
#include <QString>
#include <QIODevice>
#include <QFileDialog>
#include "File.h"
File::File(QWidget *parent)
:QWidget(parent)
{
setupUi(this);
connect(loadFile, SIGNAL(clicked()),
this, SLOT(loadFile()));
QString wayToData(QFileDialog::getOpenFileName(this));
}
void File::loadFile(){
QString filename=QFileDialog::getOpenFileName(this);
QFile file(filename);
if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
loadFile->setPlainText(QString::fromUtf8(file.readAll()));
mFilePath=filename;
statusBar()->schowMessage(tr"(Datei erfolgreich geladen"),3000);
}
}
void File::saveFile(const QString &name){
QFile file(name);
if(file.open(QIODevice::WriteOnly|QIODevice::Text)){
file.write(textEdit->toPlainText().toUtf8());
statusBar()->showMessage(tr("Datei erfolgreich gespeichert"),3000);
}
}
void File::saveFileAs() {
mFilePath=QFileDialog::getSaveFileName(this);
if(mFilePath.isEmpty())
return;
saveFile(mFilePath);
}
nici
Hmm mir fällt nichts ein ^^
Deine Klasse "File" (was übrigens ein extrem schlechter Name für eine GUI-Klasse ist) ist ein QWidget.. gehe also nach http://doc.trolltech.com/4.4/qwidget-members.html und suche nach "statusBar" ... so.. hat der Compiler nun recht oder nicht?Warum wird gesagt, dass statusBar nicht deklariert ist?