crossplatform.ru

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

> Загрузка большого текстового файла, Проблемы с загрузкой
ALeXUI
  опции профиля:
сообщение 17.12.2012, 23:13
Сообщение #1


Студент
*

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

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




Репутация:   0  


Здравствуйте, столкнулся со следующей проблемой.
Необходимо загрузить и обработать, большой текстовый файл, примерно 20 мб.
И желательно его вывести, например, в qtextedit или что-нибудь подобное.

Самы простой вариант дико загружает компьютер:


        QFile Filetxt;
        Filetxt.setFileName(PathName);
        Filetxt.open(QIODevice::ReadOnly);
        QTextStream textStream;
        textStream.setDevice(&Filetxt);        
        MainTextEdit->append(textStream.readAll());
        Filetxt.close();








Подскажиет пожалуйста, как это сделать лучше?

Нужно распарсить каждую строчку, там находятся данные, по которым строить графики.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
_Vitaliy_
  опции профиля:
сообщение 18.12.2012, 19:54
Сообщение #2


Студент
*

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

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




Репутация:   0  


У меня данные в строке разделялись как минимум одним пробелом. Если у Вас это так, то действовать можно по следующему алгоритму.
1. в *.h пишем: QStandardItemModel *model;
2. в *.cpp в конструкторе: model = new QStandardItemModel(this);
3. здесь привожу часть своего рабочего кода (некоторые "вещи" опущены) главное уловить смысл
Раскрывающийся текст
int currentRow = 0;
QCoreApplication::processEvents(); // chtobi prilozhenie ne zavisal

QStandardItem *item = 0;
while (!stream.atEnd())
{
fields = stream.readLine().simplified().split(' '); // razdelitel !!!
for (int i = 0; i < columnCount; ++i)
{
item = new QStandardItem(fields.at(i));
model->setItem(currentRow, i, item);
}
++currentRow;
}

4. далее по коду, например у меня это было отдельное окно
Раскрывающийся текст
QDialog *dialog = new QDialog(this);
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->setWindowTitle("Data ...");
...

QTableView *view = new QTableView(dialog); /// QTableView (&dialog)
view->setModel(model);
...

dialog->show();

удобно тем, что данные хранятся в модели, а с моделью довольно просто работать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 26.11.2024, 22:10