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
    Не съм го тествал на Линукс.



  • Аз направих един тест на Линукс с 4.7.4.
    Лат: 142мс, Кир: 163мс
    Нямам забавяне, но забелязах друго. Ако натисна първо кирилицата:
    Кир: 314мс, Лат: 154мс.



  • Теста трябва да се прави с еднократно натискане на единия бутон, после изтриване, после другия. Както и да е. Това време е добро. Не е хиляда и нещо. Някой може ли да го направи на Линукс но на Qt4.8?



  • Здравейте,

    на Кубунту 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?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.