QTableWidget zeigt nur die 1. Zeile an
Verfasst: 16. September 2010 22:46
Hallo,
ich hab ein Problem beim Abspeichern der Tabelle in eine Datei und danach wieder Auslesen der Tabelle. Vielleich können Sie mir helfen. Ich bekomme nur eine Zeile zurück, obwohl rowCount() und columnCount() mir die richtige Ergebnisse liefern.
void MainWindow::tSaveDemoHandler() {
fileName = ui.tFilename->text();
if (fileName.isEmpty()) {
ui.tErrorlabel->setText("<font color=red>No file Name specified</font>");
return;
}
if (!fileName.contains(".txt")) {
fileName.append(".txt");
}
fileName.insert(0, "demo/");
QFile file(fileName);
if(file.exists()){
file.remove();
}
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
ui.tErrorlabel->setText(
"<font color=red>The file couldn't be open.\nPlease try again.</font>");
return;
}
QDataStream out(&file);
int max_row = ui.tableWidget->rowCount(); //seltsames Verhalten
int max_column = ui.tableWidget->columnCount();
QString defItem = "a";
for (int irow = 0; irow <max_row; irow++) {
for (int icol = 0; icol < max_column; icol++) {
QTableWidgetItem *pItem = ui.tableWidget->item(irow, icol);
if (pItem) {
out << pItem->text(); // text inklusive ","
} else {
out << defItem;
}
}
out << "\r\n"; // Zeilenvorschub
}
file.close();
}
void MainWindow::tPlayDemoHandler() {
fileName = ui.tFilename->text();
if (fileName.isEmpty()) {
ui.tErrorlabel->setText("<font color=red>No file Name specified</font>");
return;
}
if (!fileName.contains(".txt")) {
fileName.append(".txt");
}
fileName.insert(0, "demo/");
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
ui.tErrorlabel->setText(
"<font color=red>The file couldn't be open.\nPlease try again.</font>");
return;
}
tDeleteallHandler();
QDataStream in(&file);
QString item;
int irow = 0;
while (!in.atEnd()) {
for (int icol = 0; icol < 7; icol++) {
in >> item;
if (item.compare("a") != 0) {
QTableWidgetItem *pItem = new QTableWidgetItem(item);
ui.tableWidget->setItem(irow, icol, pItem);
}
}
irow++;
}
file.close();
}
ich hab ein Problem beim Abspeichern der Tabelle in eine Datei und danach wieder Auslesen der Tabelle. Vielleich können Sie mir helfen. Ich bekomme nur eine Zeile zurück, obwohl rowCount() und columnCount() mir die richtige Ergebnisse liefern.
void MainWindow::tSaveDemoHandler() {
fileName = ui.tFilename->text();
if (fileName.isEmpty()) {
ui.tErrorlabel->setText("<font color=red>No file Name specified</font>");
return;
}
if (!fileName.contains(".txt")) {
fileName.append(".txt");
}
fileName.insert(0, "demo/");
QFile file(fileName);
if(file.exists()){
file.remove();
}
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
ui.tErrorlabel->setText(
"<font color=red>The file couldn't be open.\nPlease try again.</font>");
return;
}
QDataStream out(&file);
int max_row = ui.tableWidget->rowCount(); //seltsames Verhalten
int max_column = ui.tableWidget->columnCount();
QString defItem = "a";
for (int irow = 0; irow <max_row; irow++) {
for (int icol = 0; icol < max_column; icol++) {
QTableWidgetItem *pItem = ui.tableWidget->item(irow, icol);
if (pItem) {
out << pItem->text(); // text inklusive ","
} else {
out << defItem;
}
}
out << "\r\n"; // Zeilenvorschub
}
file.close();
}
void MainWindow::tPlayDemoHandler() {
fileName = ui.tFilename->text();
if (fileName.isEmpty()) {
ui.tErrorlabel->setText("<font color=red>No file Name specified</font>");
return;
}
if (!fileName.contains(".txt")) {
fileName.append(".txt");
}
fileName.insert(0, "demo/");
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
ui.tErrorlabel->setText(
"<font color=red>The file couldn't be open.\nPlease try again.</font>");
return;
}
tDeleteallHandler();
QDataStream in(&file);
QString item;
int irow = 0;
while (!in.atEnd()) {
for (int icol = 0; icol < 7; icol++) {
in >> item;
if (item.compare("a") != 0) {
QTableWidgetItem *pItem = new QTableWidgetItem(item);
ui.tableWidget->setItem(irow, icol, pItem);
}
}
irow++;
}
file.close();
}