Archiv verlassen und diese Seite im Standarddesign anzeigen : QT: Funktion Problem!
Hi Leute!
Ich habe ein Problem, aber ferstehe nicht woran das liegt:
void CharTrans::saveConfig(const QString &fileName, const QString &encoding)
{
QFile file(fileName);
if (!file.open(IO_WriteOnly | IO_Translate))
{
QMessageBox::warning(this, tr("bla bla"),
tr( "Can't write selected config file:\n%2" )
.arg(file.name())
.arg(file.errorString()));
}
QTextStream out(&file);
out.setEncoding(QTextStream::enconding);
.......
.......
}
Beim versuch es zu kompilieren, bekamm ich eine Fehlermeldung.
Danach habe ich versucht:
void CharTrans::saveConfig(const QString &fileName, const QString &encoding)
mit
void CharTrans::saveConfig(const QString &fileName, const QTextStream &encoding)
zu ersetzen, hat auch nichts gebracht! :(
Kennt jemand ein Ausweg?
MfG
chapaev
anda_skoa
30-01-2005, 19:45
Beim versuch es zu kompilieren, bekamm ich eine Fehlermeldung.
Welche? Sollen wir raten?
Übrigens hast du ein arg() zuviel und nach der MessageBox möchtest du wahrscheinlich abbrechen und nicht mit ungeöffnetem File weiter machen.
Ciao,
_
Sorry Leute! Fehlermeldung habe ich total vergessen :rolleyes:
g++ -c -pipe -Wall -W -O2 -march=athlon-xp -pipe -DQT_NO_DEBUG -I/usr/qt/3/mkspecs/linux-g++ -I. -I. -I/usr/qt/3/include -o myfunktion.o myfunktion.cpp
In file included from myfunktion.cpp:23:
myfunktion.ui.h: In member function `virtual void myFunktion::saveConfig(const
QString&, const QString&)':
myfunktion.ui.h:21: error: `encoding' is not a member of type `QTextStream'
myfunktion.ui.h:10: warning: unused parameter `const QString&encoding'
make: *** [myfunktion.o] Ошибка 1
Übrigens hast du ein arg() zuviel und nach der MessageBox möchtest du wahrscheinlich abbrechen und nicht mit ungeöffnetem File weiter machen.
Bisher hatte ich damit kein Problem :confused:
Warcheinlich kommt noch :D
MfG
chapaev
anda_skoa
31-01-2005, 09:50
Bisher hatte ich damit kein Problem :confused:
Kompiliert ja noch nicht :)
Du hast ein Problem mit den Datentypen.
QTextStream::setEncoding erwartet einen Wert des Typs QTextStream::Encoding, das ist ein Enum der Klasse QTextStream.
Du hast aber einen QString.
Du hast alternativ zwei Möglichkeiten:
- als zweiten Parameter für die Funktion QTextStream::Encoding statt QString benutzen
oder
- für das namentlich (als QString) bekannte Encoding über QTextCodec den entsprechenden Codec geben lassen und den am Stream mit setCodec setzen.
Ciao,
_
als zweiten Parameter für die Funktion QTextStream::Encoding statt QString benutzen
Wenn ich es richtig verstanden habe, du meinst ich soll es so machen:
void CharTrans::saveConfig(const QString &fileName, const QTextStream::setEncoding &encoding)
hmmm hat nicht viel gebracht :-(
ich habe schon semtliche Möglichkeiten ausprobiert .....
Aber ich glaube es liegt daran, das nach dem QTextStream:: kein string stehen darf sondern so eine art Funktion.
naja, dann werde ich es mit QTextCodec ausprobieren! ;-)
Danke fuer die Antwort
Ich habe so ein richtiges anfänger Problem! (ich wollte deswegen keine neue Thema aufmachen)
Ich habe ein paar Config files liege und zwar in dem selben ordner wo meine source liegt. Nach dem kompilieren und ausführen von programm werden die Files Problemlös aufgemacht, aber wenn ich den ordner in der console wechsele finktioniert gar nichts mehr (naja das liegt daran das ich als pfad ./config eingegeben habe)
jetzt die Frage: wie kann ich den folständigen pfad zu meinem programm ausgeben lasen?
ich habe ein wenig mit QDir rumgespielt aber keine passende funktion/slot gefunden!
MfG
chapaev
anda_skoa
01-02-2005, 11:23
hmmm hat nicht viel gebracht :-(
setEncoding ist eine Funktion, kein Datentyp
Ich denke ich hab Encoding geschrieben?
Einfach immer den Typ schreiben, der in der Zielfunktion als Paramter erwartet wird
Ich habe so ein richtiges anfänger Problem! (ich wollte deswegen keine neue Thema aufmachen)
Ich habe ein paar Config files liege und zwar in dem selben ordner wo meine source liegt. Nach dem kompilieren und ausführen von programm werden die Files Problemlös aufgemacht, aber wenn ich den ordner in der console wechsele finktioniert gar nichts mehr (naja das liegt daran das ich als pfad ./config eingegeben habe)
jetzt die Frage: wie kann ich den folständigen pfad zu meinem programm ausgeben lasen?
Ich denke das wurde sicher schon mal beantwortet
QApplication::applicationDirPath()
Ciao,
_
Hmm, was mache ich nun jetzt schon wieder falsch?
QString currentDir = QApplication::applicationDirPath() ;
Mit QDir hat es so funktioniert . :( (ich meine der String hat Directory übernomen)
MfG
chapaev
anda_skoa
01-02-2005, 19:18
Hmm, was mache ich nun jetzt schon wieder falsch?
applicationDirPath ist keine static Methode, du musst also die Instanz der QApplication anheben, zb die globale Variable qApp
qApp->applicationDirPath();
Sollte aber ansich der Compiler schon gesagt haben :)
Ciao,
_
applicationDirPath ist keine static Methode, du musst also die Instanz der QApplication anheben, zb die globale Variable qApp
qApp->applicationDirPath();
Das habe ich mir schon gedacht, leider habe ich es anstatt mit qApp mit app probiert :rolleyes:
setEncoding ist eine Funktion, kein Datentyp
Ich denke ich hab Encoding geschrieben?
Sorry! habe wohl falsche Zeile kopiert! :o
ich wollte eigendlich das schreiben
void CharTrans::saveConfig(const QString &fileName, const QTextStream::Encoding &encoding)
Beim kompilieren habe ich volgende Fehlermeldung bekommen:
g++ -c -pipe -Wall -W -O2 -march=athlon-xp -pipe -DQT_NO_DEBUG -I/usr/qt/3/mkspecs/linux-g++ -I. -I. -I/usr/qt/3/include -o myfunktion.o myfunktion.cpp
In file included from myfunktion.cpp:24:
myfunktion.ui.h:10: error: prototype for `void myFunktion::saveConfig(const
QString&, const QTextStream::Encoding&)' does not match any in class `
myFunktion'
myfunktion.h:36: error: candidate is: virtual void myFunktion::saveConfig(const
QString&, const QString&)
myfunktion.ui.h: In member function `void myFunktion::saveConfig(const
QString&, const QTextStream::Encoding&)':
myfunktion.ui.h:10: warning: unused parameter `const
QTextStream::Encoding&encoding'
make: *** [myfunktion.o] Ошибка 1
MfG
Chapaev
anda_skoa
02-02-2005, 13:13
Das ist jetzt ein anderes Problem.
Scheinbar steht die Methode in der falschen Klasse, oder die Deklaration (vermutlich im Designer) hat eine andere Signatur.
Wenn du noch nicht so sattelfest bist, solltes du vielleicht statt dem ui.h Hack eine saubere Implementation mittels abgeleiteter Klasse machen.
Ciao,
_
Wenn du noch nicht so sattelfest bist, solltes du vielleicht statt dem ui.h Hack eine saubere Implementation mittels abgeleiteter Klasse machen.
Das werde ich probieren. Schlieslich muss ich lehrnen zu programmieren auch ohne QT-Designer. ;)
Vielen dank für die Antworten!
MfG
chapaev
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.