Russian Qt Forum
Ноябрь 26, 2024, 11:26
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Пробемы с QScrollArea
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Пробемы с QScrollArea (Прочитано 7930 раз)
Ryhel
Гость
Пробемы с QScrollArea
«
:
Февраль 23, 2007, 14:49 »
Для отображения достаточно больших изображений с возможностью прокрутки воспользовался классом QScrollArea. Устанавливаю в QScrollArea::setWidget свой виджет - субкласс от QWidget. в котором рисую с помощью QPainter в QWidget::paintEvent(). При скролле появляются неприятные эффекты на границах видимой отласти - после перемещения виджета кратковременно становится виден пустой прямоугольник, который затем заполняется нужным изображением. Не сталкивался ли кто-нибудь с подобной проблемой? Есть ли способы ее решения? Qt-4.2.2-x11-opensource
Записан
yurror
Гость
Пробемы с QScrollArea
«
Ответ #1 :
Февраль 26, 2007, 15:30 »
В конструкторе своего класса setBackgroundRole(QPalette::Base);
Записан
Ryhel
Гость
Пробемы с QScrollArea
«
Ответ #2 :
Февраль 27, 2007, 17:05 »
setBackgroundRole(QPalette::Base) в конструкторе дочернего виджета не помогло. Господа, помогите разобраться, в чем дело - ведь QLabel скроллится файн - плавно...
Записан
libli
Новичок
Offline
Сообщений: 1
Пробемы с QScrollArea
«
Ответ #3 :
Февраль 27, 2007, 18:01 »
попробуй
Qt::WA_OpaquePaintEvent
Qt::WA_NoSystemBackground
Записан
Lion
Гость
Пробемы с QScrollArea
«
Ответ #4 :
Февраль 27, 2007, 21:45 »
Здесь скорее всего проблема в скорости отрисовки, возможно ты заново перерисовываешь весь виджет, вместо области указанной в QPainEvent::rect().
Записан
Ryhel
Гость
Пробемы с QScrollArea
«
Ответ #5 :
Февраль 28, 2007, 00:36 »
Что касается QPainEvent::rect() - то перерисовываю я именно его и со скоростью отрисовки проблем вроде бы нет...
Qt::WA_OpaquePaintEvent и Qt::WA_NoSystemBackground приводят к тому, что области по краям перестают заполняться я так понимаю QPalette::Base, paintEvent() рисует сразу поверх старого изображения и вместо мерцания при скролле происходит смазывание этих областей. Кстати, imageviewer из examples/widgets обладает той же особенностью - мерцание по краям при скролле + мерцание вокруг окон, находящихся поверх scrollarea. хотя на быстрых машинах этого почти не заметно...
Записан
Ryhel
Гость
Пробемы с QScrollArea
«
Ответ #6 :
Март 03, 2007, 13:31 »
Проблему пока не решил)
Записан
Djavdet
Гость
Re: Пробемы с QScrollArea
«
Ответ #7 :
Ноябрь 28, 2008, 11:32 »
а теперь решил???!!!!!! если да то скажи как? я столкнулся с точно такой же проблемой
Записан
Djavdet
Гость
Re: Пробемы с QScrollArea
«
Ответ #8 :
Ноябрь 28, 2008, 12:24 »
Пробовал юзать Q3ScrollView - переопределял paintEvent, рисовал на this->vieport() - все нормально работает, без глюков, но мне нельзя его юзать, а при использовании QScrollArea возникают описанные выше глюки
Записан
Ryhel
Гость
Re: Пробемы с QScrollArea
«
Ответ #9 :
Ноябрь 29, 2008, 11:56 »
Я воспользовался QGraphicsView, вроде порядок
Записан
Djavdet
Гость
Re: Пробемы с QScrollArea
«
Ответ #10 :
Декабрь 01, 2008, 08:46 »
опиши пожалуйста схему действий, что где переопределять все такое
Записан
Ryhel
Гость
Re: Пробемы с QScrollArea
«
Ответ #11 :
Декабрь 02, 2008, 01:30 »
В общем это будет тот же QScrollArea, для отрисовки фона достаточно переопределить метод drawBackground, для тюнинга можно попробовать различные комбинации опций cacheMode и viewportUpdateMode. Ну а если понадобится дополнительный функционал - QGraphicsView/QGraphicsScene хорошо описаны в Qt Assistant.
Записан
Djavdet
Гость
Re: Пробемы с QScrollArea
«
Ответ #12 :
Декабрь 11, 2008, 17:08 »
переопределил drawBackGround() у QGraphicsView или QGraphicsScene ? , я попробовал у QGraphicsView переопределить - никакой реакции - экран белый, можешь поподробнее рассказать, а ??!!!!!!
«
Последнее редактирование: Декабрь 12, 2008, 15:16 от Djavdet
»
Записан
Ryhel
Гость
Re: Пробемы с QScrollArea
«
Ответ #13 :
Декабрь 13, 2008, 00:41 »
Перегрузки drawbackgound() для отрисовки фона достаточно. По дефолу вьюшка вызывает drawBackground() сцены, так что рисовать можно в любом из классов. Что касается прблем с выводом - в какой системе координат Вы рисуете? Упомянутые методы должны работать в системе координат сцены, то есть x и у там в логических единицах, а не в пикселях. Подробнее почитать об этом можно в Qt Assistant в разделе Graphics View (
qthelp://com.trolltech.qt.443/qdoc/graphicsview.html
).
«
Последнее редактирование: Декабрь 13, 2008, 00:43 от Ryhel
»
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...