Russian Qt Forum

Qt => Qt Quick => Тема начата: Sanya от Февраль 01, 2012, 14:36



Название: [РЕШЕНО]Перемещение объектов QML в QDeclarativeView при скролинге
Отправлено: Sanya от Февраль 01, 2012, 14:36
Доброго времени суток!

Может кто-нибудь сталкивался со следующие проблемой или есть идеи ее решения:

Есть приложение на C++/Qt.  В нем у нас есть область с QDeclarativeView. В нем у нас отрисовывается два прямоугольника один в одном. Малый прямоугольник можно таскать мышью по второму. (Код ниже)
Размер QDeclarativeView меньше размера внешнего прямоугольника и появляются полосы прокрутки.

Вопрос: как сделать так, что бы при перетаскивании малого прямоугольника за область видимости скрол автоматически прокручивался?

Код QML:
Код
Javascript
   Rectangle {
       width: 1000
       height: 1000
       border.color: "#000000"
       border.width: 2
 
       Rectangle {
           width: 20
           height: 50
           border.color: "#ff0000"
           border.width: 2
 
           MouseArea {
               anchors.fill: parent
               drag {
                   target: parent
                   minimumY: 0
                   minimumX: 0
                   maximumX: parent.parent.width - parent.width
                   maximumY: parent.parent.height - parent.height
               }
           }
       }
   }
 


Название: Re: Перемещение объектов QML в QDeclarativeView при скролинге
Отправлено: OKTA от Февраль 03, 2012, 09:20
Может попробовать связаться с
void QWidget::scroll () или с QAbstractSlider - void   setValue ( int ) ?


Название: Re: Перемещение объектов QML в QDeclarativeView при скролинге
Отправлено: Sanya от Февраль 03, 2012, 15:17
Да, хорошая идея.
Но я вижу только такую реализацию:
Мы заводим свойство в QML самого верхнего(хотя не суть) объекта и туда пишем, к примеру,  координату по y области которой видно(надеюсь понятно объяснил иначе могу картинку присобачить) из C++ кода. Соответственно когда координата перетаскивания превышает заданное свойство, то мы из QML высылаем сигнал и крутим программно скрол, патча при этом значение свойства.

Но чет как-то костылем попахивает, нет? Может есть элегантней вариант?


Название: Re: Перемещение объектов QML в QDeclarativeView при скролинге
Отправлено: OKTA от Февраль 03, 2012, 17:45
Не, я думаю это не костыль, а своеобразности передачи данных между qml и c++ ))) Попробуй с QDeclarativeItem! В нем сделаешь Q_PROPERTY и все возможные сигналы пропишешь!


Название: Re: Перемещение объектов QML в QDeclarativeView при скролинге
Отправлено: Sanya от Февраль 08, 2012, 14:46
Хорошо.

Всем спасибо. :)