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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Перемещение объектов QML в QDeclarativeView при скролинге  (Прочитано 5695 раз)
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
               }
           }
       }
   }
 
« Последнее редактирование: Февраль 08, 2012, 14:47 от Sanya » Записан
OKTA
Гость
« Ответ #1 : Февраль 03, 2012, 09:20 »

Может попробовать связаться с
void QWidget::scroll () или с QAbstractSlider - void   setValue ( int ) ?
Записан
Sanya
Гость
« Ответ #2 : Февраль 03, 2012, 15:17 »

Да, хорошая идея.
Но я вижу только такую реализацию:
Мы заводим свойство в QML самого верхнего(хотя не суть) объекта и туда пишем, к примеру,  координату по y области которой видно(надеюсь понятно объяснил иначе могу картинку присобачить) из C++ кода. Соответственно когда координата перетаскивания превышает заданное свойство, то мы из QML высылаем сигнал и крутим программно скрол, патча при этом значение свойства.

Но чет как-то костылем попахивает, нет? Может есть элегантней вариант?
Записан
OKTA
Гость
« Ответ #3 : Февраль 03, 2012, 17:45 »

Не, я думаю это не костыль, а своеобразности передачи данных между qml и c++ ))) Попробуй с QDeclarativeItem! В нем сделаешь Q_PROPERTY и все возможные сигналы пропишешь!
Записан
Sanya
Гость
« Ответ #4 : Февраль 08, 2012, 14:46 »

Хорошо.

Всем спасибо. Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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