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

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

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

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

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

PVGDRK
Цитата(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
PVGDRK, как ты всё сложно делаешь. А если столбцов будет -дцать?
BRE, показал как проверять элемент, таблица может вернуть нулевой указатель.
PVGDRK
Цитата(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
Цитата(PVGDRK @ 1.6.2010, 11:47) *
Что означает знак "?" после itm?
Спасибо :)

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

Дык, лучше вначале изучить язык на котором пытаешься программировать... ;)
Почитай сам, что означает эта конструкция.

Не сам, а сама :)
Спасибо Всем огромное ! Все заработало! Книжки обязательно почитаю :)

Скажите еще пожалуйста, а возможно ли все данные из tableWidget сохранить в экселе по столбцам, а не в строчку?

Все, разобралась. Спасибо :)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.