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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Медленный вывода текстового файла в компонент Text Editor  (Прочитано 3919 раз)
taifun
Гость
« : Апрель 01, 2010, 16:53 »

Написал функцию вывода текстового файла в компонент  Text Editor, но вывод осуществляется долго. Нельзя как-нибудь скорости добавить?

Код:
void MainWindow::readFile()
{
    qDebug() << "******** File reading ********";
    QFileDialog *OpenFileDialog;
    QString fileName = OpenFileDialog->getOpenFileName(this, trUtf8("Открыть"));
    QFile file(fileName);                                                     //создаем файл
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))  //открываем файл
         return;

    QTextStream in(&file);
    while (!in.atEnd()) {                                                      //читаем, пока не достигнем конца
         QString line = in.readLine();
         ui->textEdit->insertPlainText(line + "\n");
     }
    file.close();

}
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Апрель 01, 2010, 17:21 »

Если файл небольшой и память позволяет, то можно вместо построчного чтения использовать readAll(), а затем setPlainText. Либо просто вместо ui->textEdit->insertPlainText(line + "\n"); делать ui->textEdit->append(line).
Да и вообще не за чем создавать переменную line каждый раз в цикле (это очень прожорливо)
Цитировать
QString line;
while (!in.atEnd()) {                                                      //читаем, пока не достигнем конца
         line = in.readLine();
         ui->textEdit->insertPlainText(line + "\n");
     }
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
SABROG
Гость
« Ответ #2 : Апрель 01, 2010, 19:57 »

Голосуй, чтобы пофиксили: http://bugreports.qt.nokia.com/browse/QTBUG-3554
Записан
taifun
Гость
« Ответ #3 : Апрель 02, 2010, 07:39 »

Если файл небольшой и память позволяет, то можно вместо построчного чтения использовать readAll(), а затем setPlainText. Либо просто вместо ui->textEdit->insertPlainText(line + "\n"); делать ui->textEdit->append(line).
Да и вообще не за чем создавать переменную line каждый раз в цикле (это очень прожорливо)

Дааа, с переменной проглядел. А файлы большие.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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