QTextEdit показва текста много бавно под Win7, Qt4.8.
-
Наскоро си сложих Qt_SDK_Win_offline_v1_2_en с Qt4.8.0 и забелязах, че текстовия редактор който ползвам показва текста дразнещо бавно.
Направих си една малка програмка (т.е. махнах всичко излишно), която представлява един QTextEdit и три бутона. Като се натисне първия бутон се инсъртват 300 реда текст на латиница. Като се натисне втория бутон се инсъртват 300 реда текст на кирилица. Третия бутон изтрива всичко. Показва се и времето върху самите бутони.@void MainWindow::InsertText(QString text)
{
textEdit->textCursor().beginEditBlock();
for(int r = 0; r < 300; r++)
{
textEdit->textCursor().insertHtml(text);
}
textEdit->textCursor().endEditBlock();
}@Едно и също exe го пускам с dll-и на Qt4.7.4 и Qt4.8.0
Статистика:
Qt4.7.4
300 реда на латиница за 80 милисекунди.
300 реда на кирилица за 150 милисекунди.Qt4.8.0
300 реда на латиница за 200 милисекунди.
300 реда на кирилица за 1250 милисекунди.Двата текста - на кирилица и на латиница са еднакво дълги.
Освен бавното показване на текста се наблюдава и друг страничен ефект - забавяне при скролиране когато текста е на кирилица (плъзгача на лентата за скролиране буквално изостава от курсора на мишката, когато се тегли). Също така има и още по-досадно забавяне/насичане при преоразмеряване на прозореца.
Качил съм програмката тук: "Text.7z":http://www.fileden.com/files/2007/6/1/1132760/Linux/Text.7z
В архива има Dll-и за Qt4.7.4 и Qt4.8.0 и самото exe
Не съм го тествал на Линукс. -
Здравейте,
на Кубунту 64бита - 58мс латиница и 80мс кирилица на 4.8 и 52, 80 съответно на 4.7.4
Пробвах разни номера ( да събера стринговете в друг стринг и крайния резултат да вкарам в полето, да използвам QLatin1String където може и т.н ), но разлика почти няма (няколко мс).
Разгледай статиите за стрингове "тук":http://qt-project.org/wiki/Category:QtInternals . Може да е нещо от кодирането.
-
Ако си пробвал същата програма която и аз и ти дава тези резултати за 4.7.4 и 4.8.0, то работата почва да ми намирисва на някакъв бъг, защото няма логика само за Windows и само за Qt4.8.0 да има такива големи отклонения, при положение че се прави такова елементарно действие.
Няма ли някой да го тества и на Windows?