LINUX.ORG.RU

QT и QList. Не могу прочитать QList<my_Type>. Помогите, пожалуйста!


0

0

Добрый день!

Возник вопрос - не могу пока осилить. Qt4.4. + MinGW + Windows.

Пишу программку для тестирования студентов. Вопросы, варианты ответов, правильный ответ хранятся в списке QList<Test>. Записать этот QList<Test> удаётся успешно. Но не получается прочитать!!! В конечном результате мне важно прочитать эти самые вопросы, ответы... Чтобы передать их в lineEdit'ы. Чтение вроде всего QList<Test> получается, но видимо где-то ошибка или еще что-то.. К конечному эллементу добраться не получается. В момент доступа к элементу QList<Test> происходит ошибка! На стадии компиляции никаких ошибок нет.



>>> TEST.H:


#ifndef TEST_H
#define TEST_H
#include <QString>
#include <QDataStream>

class Test {
	public:
		QString vopros, otvet1, otvet2, otvet3, otvet4;
		int rightOtvet;
};

QDataStream &operator<<(QDataStream &out, QList<Test> &test);
QDataStream &operator>>(QDataStream &in, QList<Test> &test);
#endif




Переопределение "<<" и ">>"

#include "test.h"
#include <QMessageBox>

QDataStream &operator<<(QDataStream &out, QList<Test> &test)
{
    for (int i=0; i<test.size(); i++) {
        out << test[i].vopros
        << test[i].otvet1
        << test[i].otvet2
        << test[i].otvet3
        << test[i].otvet4
		<< test[i].rightOtvet;
    }
	return out;
}

QDataStream &operator>>(QDataStream &in, QList<Test> &test)
{
    for (int i=0; i<test.size(); i++) {
        in  >> test[i].vopros
            >> test[i].otvet1
            >> test[i].otvet2
            >> test[i].otvet3
            >> test[i].otvet4
            >> test[i].rightOtvet;
    }
	return in;
}



Чтение из файла!!!

QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_4);
in >>  listTest;  //тип QList<Test>
QMessageBox::information(this, "Erro", "READ");


anonymous

>for (int i=0; i<test.size(); i++) {

Ты не знаешь, сколько записей тебе нужно прочитать, поэтому читаешь мусор - test.size() не определено, нужно брать из файла.

З.Ы. Отладчиком воспользоваться - не?

JackYF ★★★★
()
Ответ на: комментарий от JackYF

Т.е. я должен записать информацию о том сколько записей в файл, а потом считав эту переменную подставить её в цикл?

Я попробовал вручную указать сколько записей for (int i=0; i<4; i++) { - возникает ошибка при исполнении файла.

Как мне быть? Сижу на этом моменте уже пол дня...

anonymous
()
Ответ на: комментарий от anonymous

>Я попробовал вручную указать сколько записей for (int i=0; i<4; i++) { >- возникает ошибка при исполнении файла.

Если сегфолт - то попробуй valgrind, сразу увидишь где и почему ошибка.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.