crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> tableWidget сохранить таблицу в фал, Проблема с пустыми строками
PVGDRK
  опции профиля:
сообщение 1.6.2010, 9:36
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

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




Репутация:   0  


Помогите советом... есть таблица 3 столбца и 100 строк... некоторые из них являются заполненными пользователем... мне нужно сохранить эту таблицу в файл, так,чтобы потом из этого файла данные снова можно было загрузить в tableWidget в той же последовательности.
Вопрос первый: В какой файл лучше сохранять данные? Я сохраняю в текстовом виде в экселе, но данные сохраняются в строчку...
И второе При выводе дынных из tableWidget в поток при обнаружении пустой строки выдается ошибка, как я поняла из-за того,что item(i,j) возвращает 0, а не String. Как это отслеживать? Я писала так:
Цитата
str_txt=ui.tableWidget->item(i,j)->text();
if (!str_txt.isEmpty()) {...}

Но ошибка возникает раньше чем сама проверка....
Если кто может - подскажите как это правильно написать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.6.2010, 9:39
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


пробегай по всем строкам таблицы и сохраняй данные из элементов в файл.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 1.6.2010, 9:57
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 1.6.2010, 10:39) *
пробегай по всем строкам таблицы и сохраняй данные из элементов в файл.

Так я так и делаю.... Проблема в том, что когда строка пустая возникает ошибка. Как это отслеживать?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.6.2010, 10:02
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(PVGDRK @ 1.6.2010, 13:57) *
Так я так и делаю
покажи код обхода таблицы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 1.6.2010, 10:02
Сообщение #5


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

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Цитата(PVGDRK @ 1.6.2010, 10:57) *
Так я так и делаю.... Проблема в том, что когда строка пустая возникает ошибка. Как это отслеживать?

QTableWidgetItem *itm = ui.tableWidget->item(i,j);
str_txt = itm?  itm->text() : "";
if (!str_txt.isEmpty()) {...}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 1.6.2010, 10:31
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 1.6.2010, 11:02) *
Цитата(PVGDRK @ 1.6.2010, 13:57) *
Так я так и делаю
покажи код обхода таблицы

QString str = QFileDialog::getSaveFileName(0,"Save File","", " *.xls");
   if (!str.isEmpty())                       // если имя файла задано
     {                        
    QFile MyFile(str);                           // Создаем файл    
    if ( MyFile.open(QIODevice::WriteOnly) )
         {
    QDataStream output(&MyFile);

                if( Col==0)  //Первый столбец
                {
                        for( Row=0;Row<100;++Row)  //Строки  от  0 до 99
                   {
                        str_txt=ui.tableWidget->item(Row,0)->text();
                        output<<str_txt;
                        if(Row==99) Col=1;        
                    }
                }

              if( Col==1)  //Второй столбец
              {....}
              if( Col==2)  //Третий столбец
              {....}                     
         }
    }

Ошибка возникает при прохождении первого столбца, разу,как только считыавем пустую строку...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.6.2010, 10:41
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


PVGDRK, как ты всё сложно делаешь. А если столбцов будет -дцать?
BRE, показал как проверять элемент, таблица может вернуть нулевой указатель.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 1.6.2010, 10:47
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 1.6.2010, 11:41) *
PVGDRK, как ты всё сложно делаешь. А если столбцов будет -дцать?
BRE, показал как проверять элемент, таблица может вернуть нулевой указатель.

Да я знаю что можно сразу и строку и столбец проверять... это проще ... пока так написалось... в процессе отладки... просто я еще только учусь....
а вот то что написал BRE прокомментируйте пожалуйста...
[code]
QTableWidgetItem *itm = ui.tableWidget->item(i,j);
str_txt = itm? itm->text() : "";
if (!str_txt.isEmpty()) {...}[
/code]
Что означает знак "?" после itm?
Спасибо :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 1.6.2010, 10:52
Сообщение #9


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

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Цитата(PVGDRK @ 1.6.2010, 11:47) *
Что означает знак "?" после itm?
Спасибо :)

Дык, лучше вначале изучить язык на котором пытаешься программировать... ;)
Почитай сам, что означает эта конструкция.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.6.2010, 11:02
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(PVGDRK @ 1.6.2010, 14:47) *
Что означает знак "?" после itm?
это так называемый тернарный оператор, т.е. у которого три аргумента:
выражение ? первый_вариант : второй_вариант
смотри в книге по Си/Си++
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 30.6.2022, 7:26