Russian Qt Forum
Сентябрь 24, 2024, 08:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Вывод текста.  (Прочитано 11006 раз)
gelonis
Гость
« : Апрель 24, 2010, 19:16 »

Помогите с простой задачей. Необходимо почитать текстовый файл и вывести его для просмотра. Пробовал выводить в QPlainTextEdit, QTextEdit, QTextBrowser при размерах файлов от 3М начинаются жуткие тормоза.Размер может доходить до 20М. Чем пользоваться? Это вообще нормальная ситуация или я в коде намудрил.

Делаю так
Код:
smallEditor = new QPlainTextEdit;
QString *html;
  QFile file(text);
  if (file.open(QIODevice::ReadOnly)) {
                 html=new QString(file.readAll());}
smallEditor->appendPlainText(*html);
« Последнее редактирование: Апрель 24, 2010, 19:23 от gelonis » Записан
alexman
Гость
« Ответ #1 : Апрель 24, 2010, 19:26 »

Можно реализовать виджет, который будет читать данные из файла на лету, то есть при сколлинге.
Записан
gelonis
Гость
« Ответ #2 : Апрель 24, 2010, 20:41 »

Планируется в последствии перед выводом текста его обрабатывать, как правильно это сделать, может есть пример?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Апрель 24, 2010, 21:08 »

Непонятно зачем делать указатель на QString, ведь "просто QString" в данном случае займет даже меньше памяти  Улыбающийся
А в остальном Ваш вариант улучшить нечем. Динамический скроллинг (с подгрузкой) изучался несколько месяцев назад, (на этом форуме). но во всяком случае это сотни строк кода, ни о какой простоте говорить не приходится.  До 100 Mb (объем файла) это не имеет смысла. Так что лучше смириться с тормозами  Улыбающийся
Записан
gelonis
Гость
« Ответ #4 : Апрель 24, 2010, 21:18 »

Т.е это нормальная ситуация для этих компонентов? Вывод текста это же обычная процедура, неужели все программы на QT где это применяется тормозят.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Апрель 24, 2010, 22:57 »

в креаторе много кода по этому поводу, но, к сожалению, выдирать его всем лениво.
Записан
alexman
Гость
« Ответ #6 : Апрель 25, 2010, 10:18 »

Есть ли способ определить количество строк в файле быстро?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Апрель 25, 2010, 10:33 »

Есть ли способ определить количество строк в файле быстро?
readAll и split для возвращаемой QString. Скоростью это не блещет, если надо быстрее - то копирование файла в память и поиск концов строк скромным for. 
Записан
alexman
Гость
« Ответ #8 : Апрель 25, 2010, 10:41 »

Есть ли способ определить количество строк в файле быстро?
readAll и split для возвращаемой QString. Скоростью это не блещет, если надо быстрее - то копирование файла в память и поиск концов строк скромным for. 
Спасибо! Второй способ можно попробовать!
Записан
alexman
Гость
« Ответ #9 : Апрель 25, 2010, 10:48 »

Есть ли способ определить количество строк в файле быстро?
readAll и split для возвращаемой QString. Скоростью это не блещет, если надо быстрее - то копирование файла в память и поиск концов строк скромным for. 
Во втором способе есть небольшая проблема: файла может не влезть в оперативку! Можно попробовать загружать частями!
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Апрель 25, 2010, 11:48 »

Во втором способе есть небольшая проблема: файла может не влезть в оперативку! Можно попробовать загружать частями!
Да + есть проблемы с символами концов строк. Варианты решения здесь http://www.prog.org.ru/topic_11267_0.html
Записан
gelonis
Гость
« Ответ #11 : Апрель 25, 2010, 18:14 »

в креаторе много кода по этому поводу, но, к сожалению, выдирать его всем лениво.
Есть пример creatore: Dock Widgets Example. Попробовал вставить туда текста 16М устал ждать ответа от приложения. Как сделать обычный блокнот на QT типа Windows notepad, он же вроде на С реализован?
Записан
alexman
Гость
« Ответ #12 : Апрель 25, 2010, 18:26 »

в креаторе много кода по этому поводу, но, к сожалению, выдирать его всем лениво.
Есть пример creatore: Dock Widgets Example. Попробовал вставить туда текста 16М устал ждать ответа от приложения. Как сделать обычный блокнот на QT типа Windows notepad, он же вроде на С реализован?
Notepad на большом файле тоже зависнет.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #13 : Апрель 25, 2010, 18:33 »

У Notepad раньше было ограничение в 64 килобайта. Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
gelonis
Гость
« Ответ #14 : Апрель 25, 2010, 19:27 »

Попробуйте сами у меня работает, пару секунд открывает зато потом без тормозов прокручивается.
Вики -
В настоящее время редактор поддерживает контекстную замену, горячие клавиши (например, Ctrl-S для сохранения файла), снят предел в 64 Кбайт и добавлена поддержка Юникода.
« Последнее редактирование: Апрель 25, 2010, 19:31 от gelonis » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 23.