crossplatform.ru

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


  Ответ в Dragscroll QScrollArea внутри QGraphicsView
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Amadey Дата 12.8.2014, 13:25
 
Цитата(Trisch @ 11.8.2014, 23:02) *
Как я понял вам надо при зажатии кнопки мыши над лейблалы можно было скролить?

Просто задайте объекту Form родителя.

Как-то так:
...
form = new Form(this);
...


Спасибо, всё заработало, правда возникли проблемы с поворотом содержимого GraphicsView, решил её добавлением в конструктор Form строки:
...
this->setWindowFlags(Qt::Popup);
...


И ещё, вдруг кому понадобится - для адекватной работы скроллера на кнопках нужно в фильтре, перед изменением scroll, поставить проверку на выход за пределы скролла, иначе, когда скролл находится в нижнем или верхнем положении возможны скачки:
...
if (scroll->value() - mouseEvent->y() + y0 < scroll->maximum() && scroll->value() - mouseEvent->y() + y0 > 0)
    scroll->setValue(scroll->value() - mouseEvent->y() + y0);
...


Цитата(Amadey @ 12.8.2014, 14:12) *
И ещё, вдруг кому понадобится - для адекватной работы скроллера на кнопках нужно в фильтре, перед изменением scroll, поставить проверку на выход за пределы скролла, иначе, когда скролл находится в нижнем или верхнем положении возможны скачки:
...
if (scroll->value() - mouseEvent->y() + y0 < scroll->maximum() && scroll->value() - mouseEvent->y() + y0 > 0)
    scroll->setValue(scroll->value() - mouseEvent->y() + y0);
...


Ошибочка вышла, это не помогает :rolleyes:
Trisch Дата 11.8.2014, 22:02
  Как я понял вам надо при зажатии кнопки мыши над лейблалы можно было скролить?

Просто задайте объекту Form родителя.

Как-то так:
...
form = new Form(this);
...
Amadey Дата 11.8.2014, 6:54
 
Цитата(Trisch @ 11.8.2014, 2:26) *
Можете скинуть проект в архиве?

Сюда загрузить не удалось.
http://rghost.ru/57403274
Trisch Дата 11.8.2014, 1:26
  Можете скинуть проект в архиве?
Amadey Дата 10.8.2014, 9:24
 
Цитата
Не совсем понял. При нажатии на кнопку мыши над кнопкой, не происходит скролинг? Ну тогда, все правильно, так как кнопка отлавливает события нажатия мыши.


Событие не отлавливается фильтром установленным на ScrollArea->view(), впрочем события на кнопку не важны, в конечном итоге от кнопок отказались, теперь всё пространство ScrollArea занимают лейблы, но на лейблах не работает mouseMove.
Trisch Дата 9.8.2014, 16:54
  Amadey,

В идеале, mouseMoveEvent() должен перенаправить события мыши объекту который отвечает за "скролинг".

Цитата
Нашел одну особенность: на кнопке отлавливается событие MouseMove, но не ловится событие MouseButtonPress, на лейблах всё в точности наоборот.


Не совсем понял. При нажатии на кнопку мыши над кнопкой, не происходит скролинг? Ну тогда, все правильно, так как кнопка отлавливает события нажатия мыши.
Amadey Дата 8.8.2014, 8:31
  Нашел одну особенность: на кнопке отлавливается событие MouseMove, но не ловится событие MouseButtonPress, на лейблах всё в точности наоборот.
Amadey Дата 8.8.2014, 7:59
 
Цитата(Trisch @ 7.8.2014, 21:48) *
Да, надо переопределить события мыши mouseMoveEvent() для QGraphicsView.

Можно по подробнее? Что именно должно выполнять переопределённое mouseMoveEvent() для QGraphicsView?

Цитата(Litkevich Yuriy @ 8.8.2014, 8:09) *
Amadey, используй тэг code при оформлении сообщений содержащих фрагменты исходных кодов

Забыл поставить, каюсь, первый раз здесь пишу, в следующий раз буду внимательнее.
Litkevich Yuriy Дата 8.8.2014, 7:09
  Amadey, используй тэг code при оформлении сообщений содержащих фрагменты исходных кодов
Trisch Дата 7.8.2014, 20:48
  Да, надо переопределить события мыши mouseMoveEvent() для QGraphicsView.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 3.5.2024, 3:42