[gelöst] QFile, QFileDialog, QDataStream

Du bist neu in der Welt von C++? Dann schau hier herein!
jerry42
Beiträge: 126
Registriert: 9. Oktober 2008 10:48

Beitrag von jerry42 »

Auf die schnelle fallen mir drei Möglichkeiten, die davon abhängen, was du willst.
Soll diese Nachricht nur für dich als Kontrolle dienen oder soll der Benutzer eine Rückmeldung bekommen?

Für ersteres kannst du einfach die Methode qDebug() nutzen. (nicht vergessen QDebug zu includen)

Wenn es aber an den Benutzer gerichtet ist, kannst du z.B. folgendes in Betracht ziehen:
Entweder du setzt dein Widget in ein QMainwindow hinein und schreibst es dort in die Statusbar.
Oder du lässt den Benutzer durch ne Messagebox oder ähnliches informieren. (wobei mich das als Benutzer eher nerven würde).

Am besten du legst ein QMainWindow zugrunde.

Gruß jerry42
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

also eigentlich möchte ich nur, dass wenn der Benutzer seine Werte eingibt und auf "ok" drückt, dass er dann die eingegebenen Werte in einem Array wieder bekommt. Sprich, es soll sich dann ein Fenster/Textfeld öffnen wo das Array dann steht, welches man dann noch speichern kann.

lg

nici
Hmm mir fällt nichts ein ^^
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

so ich hab jetzt noch mal von ganz vorne angefangen. Ich kann jetzt eine Datei (als Bildformat) speichern, aber ich kann keine Datei öffnen.
Beim compilieren habe ich aber noch viele Fehlermeldungen.

Code: Alles auswählen

#include <QtGui>
#include "FileN.h"

FileN::FileN(QMainWindow *parent)
		:QMainWindow(parent)
{		
 setupUi(this);		
}



void FileN::erstelleConnects()
{
	connect(saveFile, SIGNAL(clicked()),
				this, SLOT(saveFile()));
	
}
 void FileN::saveFile()
 {	
 	
 	QFileDialog *tmp = new QFileDialog;
 	
 	QString Dateiendung;
 	QString fileName = tmp->getSaveFileName (this, "Speichern", "unbekannt" , "*.png;;*.bmp;;*.jpg;;*.ppm", &Dateiendung);
 	
 	//falls vom Benutzer keine Dateiendung angegeben wird:
 	
 if (fileName.section('.', -1)!=Dateiendung.section('.',-1))
 {
 	//Dateiendung an den Namen hängen:
 	fileName.append(Dateiendung.section('*',-1));
 }


Code: Alles auswählen

#ifndef FILEN_H
#define FILEN_H

#include "ui_file2.h"
#include "includes.h"

//using namespace Ui;
class FileN;
class FileN : public QMainWindow, public Ui::FileN
{
	Q_OBJECT
	
	public slots:
		void saveFile();
		
		void erstelleConnects();
};
#endif

Code: Alles auswählen

#include <QApplication>
#include "MainWindow.h"

int main(int argc, char *argv[])
{
	QApplication app(argc,argv);
	QDialog *widget = new QDialog();
	
	FileN* Oberflaeche = new FileN();
	Oberflaeche->setupUi(widget);
	Oberflaeche->erstelleConnects();
	
	widget->show();
	
	return app.exec();
	
	}

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 fileN.o fileN.cpp
FileN.h:10: error: expected class-name before '{' token
fileN.cpp:4: error: prototype for 'FileN::FileN(QMainWindow*)' does not match any in class 'FileN'
FileN.h:10: error: candidates are: FileN::FileN(const FileN&)
FileN.h:10: error: FileN::FileN()
fileN.cpp: In constructor 'FileN::FileN(QMainWindow*)':
fileN.cpp:7: error: 'setupUi' was not declared in this scope
fileN.cpp: In member function 'void FileN::erstelleConnects()':
fileN.cpp:15: error: no matching function for call to 'FileN::connect(<unresolved overloaded function type>, const char [11], FileN* const, const char [12])'
/usr/include/qt4/QtCore/qobject.h:181: note: candidates are: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:282: note: bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const
fileN.cpp: In member function 'void FileN::saveFile()':
fileN.cpp:32: error: expected `}' at end of input
make: *** [fileN.o] Fehler 1


Warum wird gesagt, dass Ui nicht deklariert ist und dass ein Klassenname definiert werden muss? oder verstehe ich die Meldungen falsch??

lg

nici
Hmm mir fällt nichts ein ^^
jerry42
Beiträge: 126
Registriert: 9. Oktober 2008 10:48

Beitrag von jerry42 »

warum hast du in deinem Header ne Forward declaration auf die selbe klasse?
der zweite Fehler beruht darauf, dass du den Konstruktor den du in cpp nimmst, nicht im header deklariert ist.
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hi,

hmm ich hab jetzt

Code: Alles auswählen

public:
		FileN();
		~FileN();
in die header-datei geschrieben, es kommt aber trotzdem der Fehler

lg

nici
Hmm mir fällt nichts ein ^^
jerry42
Beiträge: 126
Registriert: 9. Oktober 2008 10:48

Beitrag von jerry42 »

und was ist mit dem?

Code: Alles auswählen

FileN::FileN(QMainWindow *parent)
      :QMainWindow(parent)
{      
 setupUi(this);      
} 
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

was soll denn damit sein. Ich weiss es leider nicht.

muss da

Code: Alles auswählen

FileN::FileN()
{
}

FileN::~FileN()
{
{
hin????? ohne das setupUi(this);
Hmm mir fällt nichts ein ^^
jerry42
Beiträge: 126
Registriert: 9. Oktober 2008 10:48

Beitrag von jerry42 »

du implementierst den Konstruktor ohne ihn im Header zu deklarieren.

In den Header muss also noch folgendes:

Code: Alles auswählen

FileN(QMainWindow *parent = 0); 
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das wird mir hier zu ... nicht Qt-spezifisch. Ab nach C++-Grundlagen damit.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

so ich habe die Fehler behoben. Der saveFile-Button funktioniert. Jetzt erweitere ich um einen loadFile-Button.

lg

nici
Hmm mir fällt nichts ein ^^
Antworten