auf öffentliche QList<QString> in anderer Klasse zugre
Verfasst: 18. März 2011 11:49
Hallo @ all
Ich arbeite mit Microsoft Visual Studio 2008, Qt und dem QtDesigner.
Ich habe ein QMainWindow (Klasse exporter.cpp) und einen QDialog (Klasse table.cpp).
Wenn ich in meinem QMainWindow auf einen Knopf „Tabelle“ klicke, dann öffnet sich der QDialog mit einer Tabelle, d.h bei Klick wird also in exporter.cpp die Methode „openQDialog“ aufgerufen. Diese ruft die Methode „fillTable“ in table.cpp und danach „show“ auf:
export.cpp:
Die Tabelle und ihre Werte werden auch problemlos angezeigt. Der Nutzer kann dann die Werte ändern und klickt dann auf einen Knopf „Speichern“. Dann werden in der Methode „saveTable“ die Werte der ersten Spalte in eine Liste namens „liste_name“ gespeichert und die Werte der zweiten Spalte in Liste „liste_type“ gespeichert:
table.cpp:
Diese beiden Listen sind in table.h unter „public“ definiert:
table.h:
Dann schließt sich QDialog wieder und der Nutzer muss weitere Eingaben in dem QMainWindow machen...
Später brauche ich aber die in definierten Listen in export.cpp und will somit in der Methode "fillNewTable" auf die gefüllten Listen zugreifen:
export.cpp:
PROBLEM: Beide Listen sind hier leer?!
Habe beim Debuggen geguckt: In der Klasse table.cpp nach der Methode „saveTable“ sind beide gefüllt, in der Klasse export.cpp wird danach ne leere Liste übergeben?
Das ist sicherlich ein einfacher Fehler den ich da mache? Vielleicht könnt ihr helfen?!
DANKE
Ich arbeite mit Microsoft Visual Studio 2008, Qt und dem QtDesigner.
Ich habe ein QMainWindow (Klasse exporter.cpp) und einen QDialog (Klasse table.cpp).
Wenn ich in meinem QMainWindow auf einen Knopf „Tabelle“ klicke, dann öffnet sich der QDialog mit einer Tabelle, d.h bei Klick wird also in exporter.cpp die Methode „openQDialog“ aufgerufen. Diese ruft die Methode „fillTable“ in table.cpp und danach „show“ auf:
export.cpp:
Code: Alles auswählen
void Export::openQDialog()
{
table *newTable= new table (this);
newTable ->fillTable();
newTable ->show();
}
table.cpp:
Code: Alles auswählen
void table::saveTable()
{
// jede Zelle in eine Liste speichern
for (int row = 0; row < ui.tableWidget_table->rowCount(); row++)
{
QTableWidgetItem *widgetItem1 = new QTableWidgetItem();
widgetItem1 = ui.tableWidget_table->item(row, 0);
QTableWidgetItem *widgetItem2 = new QTableWidgetItem();
widgetItem2 = ui.tableWidget_table->item(row, 1);
liste_name.append(widgetItem1->text());
liste_type.append(widgetItem2->text());
}
}
table.h:
Code: Alles auswählen
public:
table(QWidget *parent = 0, Qt::WFlags flags = 0);
~table();
QList<QString> liste_name;
QList<QString> liste_type;
Später brauche ich aber die in definierten Listen in export.cpp und will somit in der Methode "fillNewTable" auf die gefüllten Listen zugreifen:
export.cpp:
Code: Alles auswählen
...
table newtable;
QList<QString> liste_name_neu = newtable.liste_name;
QList<QString> liste_type_neu = newtable.liste_type;
Das ist sicherlich ein einfacher Fehler den ich da mache? Vielleicht könnt ihr helfen?!
DANKE