[Solved] QList<QString> Probleme

Alles rund um die Programmierung mit Qt
Antworten
QtBerserker
Beiträge: 71
Registriert: 15. Mai 2006 09:07

[Solved] QList<QString> Probleme

Beitrag von QtBerserker »

Man sollte es nicht glauben, entweder ich habe in den 2 Jahren des Nichtproggens alles vergessen, oder .... weiss der Teufel :twisted:

Jedefalls habe ich eine private Klasse, in der eine Stringliste mit möglichen Pfaden für die Translations angelegt wird, abrufbar mit translationDirPaths():

Code: Alles auswählen

class LanguageSupportPrivate 
{
public:
	LanguageSupportPrivate();
	....
	const QList<QString>& translationDirPaths() const { return m_translationDirPaths; }
private:
	....
	QList<QString> m_translationDirPaths;
};

LanguageSupportPrivate::LanguageSupportPrivate()
	...
{
	...
	m_translationDirPaths	<< appDir.absolutePath() ...
	QString qtEnv = transPathFromQtEnv();
	m_translationDirPaths	<< qtEnv;
	...
und benutze dann das pimpl Idiom:

Code: Alles auswählen

LanguageSupport::LanguageSupport(QObject* parent, const QString& appName)
	:	QObject(parent),
		...
		m_pimp(new LanguageSupportPrivate)
{ ...}
bool LanguageSupport::searchTranslations()
{
	qDebug() << "Search for Translation Files in " << m_pimp->translationDirPaths();
	...
Während ich mir in der private Klasse mit qDebug die Pfade ausgeben lassen kann, ist die Liste bei call in searchTranslations() leer.

Ich gehe stillschweigend (imo sollte das Verhalten so sein) davon aus, dass bei QList<QString> foo << QString eine Kopie in die Liste eingefügt wird; falls nicht würde es erklären, warum ich kurz nach dem Einfügen den Listeninhalt noch habe, im Owner LanguageSupport jedoch dann nicht mehr (das Aufräumen benötigt ja etwas Zeit).

Wo ist mein Problem hier?

Vielen Dank
Olaf
Zuletzt geändert von QtBerserker am 24. Mai 2006 13:54, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Schonmal mit
m_pimp->translationDirPaths().join("\n") oder sowas in der Art probiert? Könnte mir vorstellen dass qDebug nicht weiss wie es die Stringlist konvertieren soll.

btw: es gibt eine Klasse QStringList :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
QtBerserker
Beiträge: 71
Registriert: 15. Mai 2006 09:07

Beitrag von QtBerserker »

Christian81 hat geschrieben:Schonmal mit
m_pimp->translationDirPaths().join("\n") oder sowas in der Art probiert?
Darin liegt es nicht:

Code: Alles auswählen

LanguageSupportPrivate::LanguageSupportPrivate() ...
{
	qDebug() << "translationDirPaths = " << translationDirPaths();
}
bool LanguageSupport::searchTranslations()
{
	qDebug() << "Search for Translation Files in " << translationDirPaths();
	...
}
const QList<QString>& LanguageSupport::translationDirPaths() const
{
	return m_pimp->translationDirPaths();
}
ergibt:

Code: Alles auswählen

translationDirPaths =  ("c:/Dokumente und Einstellungen/olaf/Eigene Dateien/Visual Studio 2005/Projects/CLangSupport", "c:/Dokumente und Einstellungen/olaf/Eigene Dateien/Visual Studio 2005/Projects/CLangSupport/i18n", "D:\Cpp\Qt\4.1.2\translations") 
Search for Translation Files in  () 
done. 
btw: es gibt eine Klasse QStringList :)
Nur eine leicht aufgebohrte Fassung von QList<QString>, nur 2-3 member mehr als List.

CU Olaf
QtBerserker
Beiträge: 71
Registriert: 15. Mai 2006 09:07

Beitrag von QtBerserker »

Es war ein Seiteneffekt einer fehlenden Klammerung innerhalb einer if Anweisung :oops: . Jetzt klappt es :roll:

Um das festzustellen, aber ich 2 debugger Anläufe benötigt - man sieht eben, was man erwartet ....
Antworten