Qt: прокрутка сложного контента.Движок веб-браузера.Выбор текста - PullRequest
0 голосов
/ 28 мая 2011

Просто любопытно прокрутить сложный контент в веб-браузерном приложении.Предположим, я использую Qt и C ++.Это не вопрос «как», а скорее «как это работает»?Полностью получено из моих любопытных иррациональных вопросов.

Я провел небольшой эксперимент.

  1. Создал большой QWidget 800x60000 px.
  2. Добавил 300 QWidgets 800x200 px, которые рисуют сами, используяQPainter.Каждый виджет выводит свое уникальное имя на консоль при вызове paintEvent ().
  3. Добавлено (1.) в QScrollArea 800x800.
  4. При прокрутке я замечаю перерисовку только тех виджетов, которые не отображаются полностьюна экране.Это только 1 виджет за раз (сцена: http://savepic.ru/2670640.jpg). Так что QScrollArea (или QWidget? Кто решает, какой виджет перерисовывать?) Умен - у нас нет загруженного ЦП, перерисовывающего все 300 виджетов все время или памятьпотребление хранения 800x60000 pixmap (-;

Предположим, я хочу использовать мышь для выделения текста и других элементов на моей «веб-странице». Поэтому я хочу иметь возможность пометить их (путем изменения фона).Как бы я это реализовал? Как разные веб-браузеры делают это? Выбор картинок, текста, таблиц ... Стоит ли думать об отслеживании мыши и рисовании серых / синих / розовых фоновых полей за элементами и моими пользовательскими виджетами?

У меня есть другой эксперимент - отображение стека сообщений. Схема та же, за исключением того, что QPainter здесь не используется - только QLabels, QTextExits, QPushButtons (scene: http://savepic.ru/2632728.jpg). Я могу установить флаг SelectableByMouse для QLabel, но каквыбрать более 1 сообщения?

Вы можете предложить мне использовать какой-нибудь рендерер Qt HTML, но это не ответ«Как это работает».

...