5 / 5 / 3
Регистрация: 17.06.2013
Сообщений: 74
1

Большой размер текста в TextEdit qml

17.05.2015, 17:44. Показов 1816. Ответов 5
Метки нет (Все метки)

Собсно, проблема в следующем:
Имеем текстовые файлы, размерами 10 Кб, 100 Кб, 1Мб, обработчик на C++ и элемент на QML. При попытке загрузки содержимого файлов имеем следующее:
  • 10 Кб
    Кликните здесь для просмотра всего текста

    Все нормально загружается, приложение чучуть подвисает.
    Большой размер текста в TextEdit qml

  • 100 Кб
    Кликните здесь для просмотра всего текста

    Уже появляются задержки с интерфейсом.
    Большой размер текста в TextEdit qml

  • 1 Мб
    Кликните здесь для просмотра всего текста

    Во время загрузки приложение намертво повисает, процент использования процессора подскакивает и держится на уровне ~60%.
    Большой размер текста в TextEdit qml

При загрузке файлов размером > 2Мб приложение полностью зависает, и через некоторое время выдает ошибку переполнения. Опытным путем установил, что траблы вызывает загрузка текста НЕПОСРЕДСТВЕННО в атрибут text.

Обработчик:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void HLookDocsMeneger::sendText(QString &txt){
    QString t;
    qint32 length = txt.length(); //doc string length
    qint32 l = 2048; //page size
    qint32 i = 0;
    while(i <= length){
        t = txt.mid(i,l);
        qDebug() << i << "/" << length;
        emit appendToDoc(t);
        i+=l;
    }
    if(i != length){
        t = txt.right(i-length);
        emit appendToDoc(t);
    }
}
Компонент:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
TextEdit{
                id: codeEdit
                width: editArea.width
                height: editArea.height
                objectName: "obj_codeEdit"
                color: "#EEE"
                text: ""
                wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
                mouseSelectionMode: TextEdit.SelectCharacters
                selectByMouse: true
                //onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
                Connections{
                    target: docManager //HLookDocsMeneger
                    onAppendToDoc: codeEdit.append(txt);
                    onGetToDoc: codeEdit.text = txt;
                    onClearDoc: codeEdit.text = '';
                }
            }
Вопрос: как это вообще понимать? Неужели QML не может в большие размеры?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2015, 17:44
Ответы с готовыми решениями:

Qml textEdit подсветка
такой вопрос, скажем у меня есть написанный на c++qt редактор кода, очень сырой, и с ужасным...

Vertical scroll in textEdit QML
Добрый день. Необходимо реализовать скролл текста в textEdit. В документации нашел flickable:...

открыть документ рэндомно в textedit QML
Добрый вечер.Имеется в папке 10 файлов с расширением *.html. Как рэндомно, по нажатию на клавишу,...

Почему при написании текста в Photoshop размер мигающего курсора такой большой?
Почему при написании текста в Photoshop размер мигающего курсора такой большой? И как это можно...

5
5 / 5 / 3
Регистрация: 17.06.2013
Сообщений: 74
17.05.2015, 19:53  [ТС] 2
Ну, товарищи тыжпрограммисты, неужели никто с QML не работал?
0
1441 / 1322 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
18.05.2015, 11:46 3
Наверное никто не отображал текст размером 2Mb. Два тома "Война и мир" в txt занимает 1.4Mb.
А вы еще перенос текста врубили, естественно все это будет тормозить.
0
5 / 5 / 3
Регистрация: 17.06.2013
Сообщений: 74
19.05.2015, 13:14  [ТС] 4
Тогда вопрос - почему компоненты на QWidget все корректно обрабатывают, а QML не смог?
0
1441 / 1322 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
19.05.2015, 15:52 5
Надо смотреть код компонента TextEdit'a и делать профилирование.
0
5 / 5 / 3
Регистрация: 17.06.2013
Сообщений: 74
12.06.2015, 21:57  [ТС] 6
Да сделали уже, не помогло.

Чуь позже мы выяснили причину - т.к. весть текст одновременно содержится в контейнере TextEdit и пытается отрендериться, он в результате повешивает gui и основной поток программы.

В случае нахождения решения - отпишу тут.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2015, 21:57

Передача текста в textEdit текста из функции
И вновь требуется помощь товарищи, дело обстоит так. Пытаюсь разобраться как передать текст в...

Обновление текста в textEdit
Задача такая: Есть self.comboBox у которого 4 значения(2,3,4,5) , есть строчная переменная допустим...

Ввод текста в TextEdit
Как запретить ввод в textedit любого текста, а разрешить только цифры?

Убрать форматирование текста в textEdit
Всем здравствуйте, при создании моей программы у меня возникла такая проблема: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru