Russian Qt Forum
Октябрь 01, 2024, 00:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Передвижение QGraphicsItem  (Прочитано 3137 раз)
sdwdd
Гость
« : Март 04, 2009, 05:05 »

Привет всем.

Имеется QGraphicsScene в котором лежит 2 QGraphicsItem.
В первый загружается картинка с помощью QPixmap.
Второй должен быть полупрозрачным прямоугольником который будет служить для выделения определенной области картинки с возможностью эту область перетаскивать мышкой.

Для создания области выделения наследую QGraphicsRectItem:
Код:
SelectionArea::SelectionArea()
        : QGraphicsRectItem()
{
    // set styling
    setRect(0.0, 0.0, 32.0, 32.0);
    setBrush( QBrush( QColor(0, 0, 255, 127 )) );
    setPen(QPen( Qt::SolidLine ));
    setZValue( 9.99 );

    // events
    setAcceptDrops(true);
    setCursor(Qt::OpenHandCursor);
}

Теперь нужно добавить в SelectionArea возможность перетаскивать его мышью в рамках родительской сцены.

Начал вот копать в QGraphicsItem::dragEnterEvent и т.п., но похоже он предназначен для других целей, там к курсору бинядтся иконки по MIME-типу и все такое.

Как можно реализовать передвижение SelectionArea?

Спасибо.
Записан
sdwdd
Гость
« Ответ #1 : Март 04, 2009, 05:10 »

Решено: setFlag(QGraphicsItem::ItemIsMovable, true);
 Улыбающийся
Записан
Khs
Гость
« Ответ #2 : Март 04, 2009, 08:52 »

Спрошу свой вопросик, раз уж такая тема появилась, вроде к топику подходит Улыбающийся

При передвижении QGraphicsItem (небольших размеров, на других не смарел) только у меня курсор "не поспевает" за позицией за которою был схвачем айтем? Т.е. я так понимаю дело в перерисовке чтоли.

Думаю дело не в версии qt, смарел на нескольких. Наверно либо в железе (хотя посмотрел draw приложение на WPF (.Net), там такого не замечается), либо в необходимых флагах оптимизации (OptimizationFlags) и режима обновления (ViewportUpdateMode) QGraphicsView.
Вроде поэкспериментировал с комбинациями  Улыбающийся, но так и не нашел оптимальной. Только вроде при ViewportUpdateMode = FullViewportUpdate, курсор при передвижении айтема, держит позицию захвата, но не думаю что данный режим есть гуд (хотя каждый для своих целей я думаю) Улыбающийся

Хотя щас посмарел и при FullViewportUpdate такое ж вродь ;\, мож оно так и должно быть?!  Непонимающий
« Последнее редактирование: Март 04, 2009, 10:38 от log1c » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.082 секунд. Запросов: 21.