Russian Qt Forum

Qt => Вопросы новичков => Тема начата: xwicked от Декабрь 23, 2020, 15:44



Название: Qt5 не загружаются данные из потока QDataStream в ushort
Отправлено: xwicked от Декабрь 23, 2020, 15:44
Привет всем! Переношу программу из Qt4 в Qt5. Из потока QDataStream загружает не все данные.
Код
C++ (Qt)
       file.setFileName(tfCross->fileName());
       QDataStream sfile(&file);
       ushort idata;
       int IntCount;
       QString sappVersion;
 
       sfile >> sappVersion;
       sfile >> IntCount;
       setRowCount(IntCount);
       sfile >> IntCount;
       setColumnCount(IntCount);
       sfile >> IntCount;
       sfile >> TableFont;
       setFont(TableFont);
 
       gKlest->setRowCount(rowCount());
       gKlest->setColumnCount(columnCount());
       gKlest->create();
 
       for (int i = 0; i < rowCount(); i++)
           for (int j = 0; j < columnCount(); j++)
           {
               //Создание ячеек сетки
               CellCrossword = new QTableWidgetItem;
               setItem(i,j,CellCrossword);
               setRowHeight(i,IntCount);
               setColumnWidth(j,IntCount);
--------------------------
               sfile >> idata; //сюда загружается 0. Вместо 84 или 67(например)
--------------------------
               idata -= 1;
 
               if(QChar(idata) == 'b')
                   item(i,j)->setBackground(BrushBlack);
               else
                   item(i,j)->setBackground(BrushWhite);
           }
В idata должно загружаться 2 байта для преобразования в QChar. Файл в hex-редакторе открыл - там все данные на месте. Они в потоках что-то изменили?


Название: Re: Qt5 не загружаются данные из потока QDataStream в ushort
Отправлено: kambala от Декабрь 23, 2020, 16:56
а остальные данные правильно читаются? отладчиком смотрел хотя бы? на каком шаге цикла не читается? может там надо указать версию Qt для QDataStream? к тому же, без файла с данными трудно понять ошибка в твоем коде или нет.


Название: Re: Qt5 не загружаются данные из потока QDataStream в ushort
Отправлено: xwicked от Декабрь 23, 2020, 17:11
а остальные данные правильно читаются? отладчиком смотрел хотя бы? на каком шаге цикла не читается? может там надо указать версию Qt для QDataStream? к тому же, без файла с данными трудно понять ошибка в твоем коде или нет.
Хотя да, он потом и остальные не читает. Получается сбивается именно в этом месте и дальше ничего не читается. Проверю или укажу версию QDataStream  и отпишусь вечером.
В коде ошибок быть не может, код 100 раз отлажен с 2009г, просто перевожу версию Qt.


Название: Re: Qt5 не загружаются данные из потока QDataStream в ushort
Отправлено: kambala от Декабрь 23, 2020, 17:22
какие-то изменения точно были. Например, мне пришлось сделать такую модификацию для Qt 5: https://github.com/kambala-decapitator/QTblEditor/commit/bd9798093bc8345c41280b81b586d12f7ff3bb45 (к твоему случаю не относится, насколько я вижу)


Название: Re: Qt5 не загружаются данные из потока QDataStream в ushort
Отправлено: RedDog от Декабрь 23, 2020, 17:25
Код:
void QDataStream::setVersion(QDataStream::Qt_4_0)
Пробовали? Ну и поиграться с версиями


Название: Re: Qt5 не загружаются данные из потока QDataStream в ushort
Отправлено: xwicked от Декабрь 24, 2020, 01:19
Код
C++ (Qt)
   QDataStream sfile(&file);
   sfile.setVersion(QDataStream::Qt_4_8);
Вопрос зарыт. Благодарю!