crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

SABROG
  опции профиля:
сообщение 12.5.2009, 13:12
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Смысл простой. Есть картинка (QPixmap) размером больше, чем окошко (QWidget). Я пытаюсь сделать таскалку (dragging) для неё.

В процессе реализации стало нужным ограничить область таскания размерами картинки. Т.е. если я пытаюсь тащить мышку за область перед картинкой или после, то я вижу серый фон и углы картинки, а стало быть надо ограничить этот скроллинг. Сделал так:

/*если позиция X с которой надо копировать картинку в paintEvent'e + ширина окна = больше чем размер картинки.
т.е. вылазит за пределы видимой области - откатываем эту позицию назад до тех пор, пока оставшаяся часть картинки
не будет влазить целиком в окно
*/
        if (pos.x()+rect().width() >= picture.width())
            pos.setX(picture.width()-rect().width());

/*
тоже самое для Y
*/
        if (pos.y()+rect().height() >= picture.height())
            pos.setY(picture.height()-rect().height());

// это вообще для левой верхней позиции. Если пытаемся скопировать с отрицательной позиции (там где картинки нет, то копируем с нуля).
        pos.setX(qMax(pos.x(), 0));
        pos.setY(qMax(pos.y(), 0));


В итоге это выглядит так:
Раскрывающийся текст




А до этого было такое:
Раскрывающийся текст




Вопрос в том как это вообще обычно делается. Как-то все это выглядит некрасиво, overhead'но.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 27.6.2025, 14:42