QTextBrowser insertPlainText () вставка большого количества данных вызывает НЕТ ОТВЕТА - PullRequest
0 голосов
/ 24 марта 2020

Я использую insertPlainText() для вставки данных в QTextBrowser в функции слота, но кажется, что это приводит к задержке даже без ответа вместе с увеличением данных. Но когда я добавил '\n' в конце данных для имитации append(), явление задержки исчезло. Но я не хочу добавлять новую строку, как решить эту проблему?

Я пытался использовать qApp->processEvents() после insertPlainText(), но это вызывает cra sh.

Я попытался запустить таймер для запуска qApp->processEvents() для обновления sh пользовательского интерфейса, но это не решило проблему.

Должен ли я запустить новый поток для получения последовательного порта данные? Но размер вставленных данных (я имею в виду полученные данные) невелик, но общий размер данных в браузере велик. Получение данных может не стоить много времени.

1 Ответ

0 голосов
/ 03 апреля 2020

insertPlainText() плохо работал на моей машине (i7,16G). Для вставки данных потребуется около 100 мсек, когда общая длина данных составляет около 4096 байт. Я пробовал QScintilla виджет с открытым исходным кодом, который лучше, но все же не идеален. Поэтому я думаю, может быть, это неправильные мысли, чтобы использовать insertPlainText().

Я изменил свои мысли. Я использую QByteArray для хранения всех данных и использую setText() для отображения последних 4096 байтов. Похоже, я делю данные на множество страниц и отображаю последнюю страницу. Этот метод решил проблему хранения большого количества данных. Но есть еще одна маленькая проблема: данные размером 4096 байт не могут заполнить мой экран, когда я разверну свое приложение. Это не выглядит хорошо, но больше данных приведет к медленной реакции, потому что приложение имеет высокую частоту обновления sh частота.

...