[gelöst] Zugriff auf QStringList zwischen zwei Klassen
Verfasst: 4. Oktober 2005 17:16
Hallo,
ich habe in meiner Klasse eine private QStringList Variable, dich ich mit Einträgen fülle:
Header:
...
class ProjectDialog : public QDialog
{
Q_OBJECT
public:
ProjectDialog(QWidget *parent = 0);
~ProjectDialog() {};
void setImageList(QStringList *list) {strImageList = list;}
QStringList* getImageList() {return strImageList;}
...
private:
Ui::ProjectDialog ui;
ModelDialog *modelDial;
QStringList *strImageList;
QListWidgetItem *listItem;
...
};
Cpp:
...
void ProjectDialog::on_ModelButton_clicked()
// call model definition dialog
{
strImageList = new QStringList;
listItem = new QListWidgetItem;
int number = ui.imageList->count();
for(int i = 0; i < number; i++)
{
listItem = ui.imageList->item(i);
imageName = listItem->text();
strImageList->append(imageName);
}
modelDial = new ModelDialog(this);
modelDial->exec();
}
...
Das Füllen der strImageList mit Einträgen funtioniert. Ich habe es überprüft. Nun möchte ich aus einer anderen Klasse über die Zugriffsfunktion getImageList() auf die QStringListe zugreifen:
Header:
#ifndef MODELDIALOG_H
#define MODELDIALOG_H
#include "ui_modeldialog.h"
class ProjectDialog;
class QListWidgetItem;
class ModelDialog : public QDialog
{
Q_OBJECT
public:
ModelDialog(QWidget *parent = 0);
~ModelDialog() {};
void setList(QStringList *list) {strList = list;}
QStringList* getList() {return strList;}
private:
Ui::ModelDialog ui;
ProjectDialog *projDial;
QStringList *strList;
QStringList *strModelList;
};
#endif
Cpp:
#include <QtGui>
#include "modeldialog.h"
#include "projectdialog.h"
ModelDialog::ModelDialog(QWidget *parent) : QDialog(parent)
{
ui.setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
projDial = new ProjectDialog(this);
strList = new QStringList;
strList = projDial->getImageList();
for (int i = 0; i < strList->size(); ++i)
{
new QListWidgetItem(strList->at(i), ui.imageList);
}
}
Der Zugriff auf die Liste scheint zu funktionieren, wobei jedoch eine leere strList-Variable entsteht. Wenn ich mit strList->count() die Anzahl der Einträge prüfe, ergibt sich als Ergebnis 0. Dem enstprechend bricht das Programm beim Durchlaufen der For-Schleife zusammen.
Kann mir jemand einen Tipp geben, wo mein Fehler liegt? Danke!
Thomas
ich habe in meiner Klasse eine private QStringList Variable, dich ich mit Einträgen fülle:
Header:
...
class ProjectDialog : public QDialog
{
Q_OBJECT
public:
ProjectDialog(QWidget *parent = 0);
~ProjectDialog() {};
void setImageList(QStringList *list) {strImageList = list;}
QStringList* getImageList() {return strImageList;}
...
private:
Ui::ProjectDialog ui;
ModelDialog *modelDial;
QStringList *strImageList;
QListWidgetItem *listItem;
...
};
Cpp:
...
void ProjectDialog::on_ModelButton_clicked()
// call model definition dialog
{
strImageList = new QStringList;
listItem = new QListWidgetItem;
int number = ui.imageList->count();
for(int i = 0; i < number; i++)
{
listItem = ui.imageList->item(i);
imageName = listItem->text();
strImageList->append(imageName);
}
modelDial = new ModelDialog(this);
modelDial->exec();
}
...
Das Füllen der strImageList mit Einträgen funtioniert. Ich habe es überprüft. Nun möchte ich aus einer anderen Klasse über die Zugriffsfunktion getImageList() auf die QStringListe zugreifen:
Header:
#ifndef MODELDIALOG_H
#define MODELDIALOG_H
#include "ui_modeldialog.h"
class ProjectDialog;
class QListWidgetItem;
class ModelDialog : public QDialog
{
Q_OBJECT
public:
ModelDialog(QWidget *parent = 0);
~ModelDialog() {};
void setList(QStringList *list) {strList = list;}
QStringList* getList() {return strList;}
private:
Ui::ModelDialog ui;
ProjectDialog *projDial;
QStringList *strList;
QStringList *strModelList;
};
#endif
Cpp:
#include <QtGui>
#include "modeldialog.h"
#include "projectdialog.h"
ModelDialog::ModelDialog(QWidget *parent) : QDialog(parent)
{
ui.setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
projDial = new ProjectDialog(this);
strList = new QStringList;
strList = projDial->getImageList();
for (int i = 0; i < strList->size(); ++i)
{
new QListWidgetItem(strList->at(i), ui.imageList);
}
}
Der Zugriff auf die Liste scheint zu funktionieren, wobei jedoch eine leere strList-Variable entsteht. Wenn ich mit strList->count() die Anzahl der Einträge prüfe, ergibt sich als Ergebnis 0. Dem enstprechend bricht das Programm beim Durchlaufen der For-Schleife zusammen.
Kann mir jemand einen Tipp geben, wo mein Fehler liegt? Danke!
Thomas