crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Загрузка *.csv в qtablewidget
Гость_Гость_Дмитрий_*_*
сообщение 20.2.2013, 14:50
Сообщение #1





Гости








    


Здравствуйте!
Есть программа имеющая таблицу QTableWidget.После её заполнения,я сохраняю её в csv файл.Но загрузить обратно не выходит.
Кто знает,где ошибка?

void MainWindow::Save(){
    QString FileSaving = QFileDialog::getSaveFileName(this,"Сохранить","c:/","Файл CSV(*.csv)");
    QFile file(FileSaving);
    if (FileSaving.isEmpty()){
        file.close();
    }else{
    if(!file.open(QIODevice::WriteOnly|QIODevice::Text)){
        QMessageBox::StandardButton Save;
        Save=QMessageBox::critical(this,"Ошибка","Ошибка сохранения",QMessageBox::Ok);
        return;
}
    }
    QTextStream save(&file);
    save<<QObject::tr("Наименование;Ед.измерения;Кол-во;Стоимость;Примечание\n");
    for(int i=0; i<twPreparation->rowCount(); i++){
        save << twPreparation->item(i,0)->text()<< ";"
             << twPreparation->item(i,1)->text()<< ";"
             << twPreparation->item(i,2)->text()<< ";"
             << twPreparation->item(i,3)->text()<< ";"
             << twPreparation->item(i,4)->text()<< ";"<<endl;
    }
    file.close();
}
void MainWindow::Load(){
    QString FileLoading = QFileDialog::getOpenFileName(this,"Открыть","c:/","Файл CSV(*.csv)");
    QFile file(FileLoading);
    if (FileLoading.isEmpty()){
        file.close();
    }else{
    if(!file.open(QIODevice::ReadOnly|
                         QIODevice::Text)){
        QMessageBox::StandardButton Load;
        Load=QMessageBox::critical(this,"Ошибка","Ошибка открытия таблицы",QMessageBox::Ok);
        return;
    }
}
    QTextStream load(&file);
    QString text=load.readAll();
    teNote->setPlainText(text);
    QStringList row = text.split(";");
    QStringList col = text.split(" ");
    for(int i=0; i<row.count(); ++i){
        for(int j=0; j<col.count(); ++j){
            QTableWidgetItem* item = new QTableWidgetItem(row[i]);
            twPreparation->setItem( i, j, item );
                    }
                }
file.close();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 21.2.2013, 1:42
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


QStringList col = text.split(" ");

количество колонок равно количеству пробелов?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 21.2.2013, 14:45
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


ты разделяешь строки символом '\n' , а колонки - ';'

поэтому

//список строк
QStringList rows_list = text.split("\n");

uint32_t row=0;
uint32_t col=0;
for(QStringList::iterator itR=rows_list.begin(); itR!=rows_list.end(); itR++,row++)
{
   QStringList columns_list=itR->split(";");

   col=0;
   for(QStringList::iterator itC=columns_list.begin(); itC!=columns_list.end(); itC++,col++)
   {
      //*itC,row,col
   }
}


(не компилировал)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 9:57