Название: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 11:32 В общем ситуация такая, есть сцена помещенная в QGraphicView.
Нужно отлавливать изменение горизонтального скроллбара и соответственно перерисовывать. В доках что-то мало нашел по этому поводу... Помогите или подскажите в каком направлении "крутить"? Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: GreatSnake от Апрель 04, 2014, 12:11 Graphics View Framework (http://www.doc.crossplatform.ru/qt/4.7.x/html-qt/graphicsview.html)
Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 13:27 Graphics View Framework (http://www.doc.crossplatform.ru/qt/4.7.x/html-qt/graphicsview.html) Убивайте, но про скроллы ничего не нашел!Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: GreatSnake от Апрель 04, 2014, 13:33 Убивайте, но про скроллы ничего не нашел! Правильно, т.к. если ты понял прочитанное, то сколлы тебя не должны беспокоить.Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 13:37 Убивайте, но про скроллы ничего не нашел! Правильно, т.к. если ты понял прочитанное, то сколлы тебя не должны беспокоить.Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 04, 2014, 13:40 Можно подробней, потому мне не понятно... Вьюшка сама все перерисует, вам не надо ни о чем бесспокоиться. :)Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 13:52 Можно подробней, потому мне не понятно... Вьюшка сама все перерисует, вам не надо ни о чем бесспокоиться. :)В моем проекте отрисовывается большое количество обьектов по логу, поэтому я хочу сделать "скользящее окно" чтобы по мере прокрутки скрола, подгружался лог и отрисовывавались новые обьекты. Я уже отрисовывал до этого большое количество объектов и скажу сразу, что ПК будет "висеть" при прокрутке скрола от верха до половины полосы прокрутки. Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Igors от Апрель 04, 2014, 14:07 Крылья-крылья... Ноги! Напр юзер имел объекты (*) и вот хочет создать объект (Х) на значительном удалении. Какое должно быть поведение скроллеров ???
* * * * X Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 14:15 Крылья-крылья... Ноги! Напр юзер имел объекты (*) и вот хочет создать объект (Х) на значительном удалении. Какое должно быть поведение скроллеров ??? Распишу как я вижу!* * * * X (*) - обьекты ___________ | * | | * | | * |- окно | * | |__________| скажем там , путь у нас рисуется всего 4 обьекта всегда! Когда я двигаю скрол вниз, он перерисовывает эти 4 обьекта на те, которые идут по логу ну или по позиции вниз! Так должно быть понятней. Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: GreatSnake от Апрель 04, 2014, 14:21 Дело в том, что вью всего лишь "отображатель" содержимого сцены и полностью от неё зависит.
То, что хочется тебе сделать, такую зависимость ломает и средствами QGraphicScene/QGraphicView просто такую задачу решить не получится. Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 14:29 Дело в том, что вью всего лишь "отображатель" содержимого сцены и полностью от неё зависит. Ок, а я могу скажем делать так, допустим я имею окно вью. Могу ли я ,определив координаты обьекта на сцене, сопоставить как-то их с текущим окном вью и соответственно вывести этот предмет или нет? То, что хочется тебе сделать, такую зависимость ломает и средствами QGraphicScene/QGraphicView просто такую задачу решить не получится. Такие манипуляции допустимы? Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: OKTA от Апрель 04, 2014, 15:19 Не особо разбираюсь в графике, но есть же QScrollBar * QAbstractScrollArea::verticalScrollBar () const у QGraphicView. Соответственно зная высоту отображаемой области и зная текущее положение скроллбара, можно принять решение подгружать или не подгружать новые объекты.
Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 04, 2014, 15:33 скажем там , путь у нас рисуется всего 4 обьекта всегда! Когда я двигаю скрол вниз, он перерисовывает эти 4 обьекта на те, которые идут по логу ну или по позиции вниз! Тогда я не вижу смысла в использовании QGraphicsXXX.Такое лучше и проще рисовать с помощью делегата для QListView. Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 15:37 Не особо разбираюсь в графике, но есть же QScrollBar * QAbstractScrollArea::verticalScrollBar () const у QGraphicView. Соответственно зная высоту отображаемой области и зная текущее положение скроллбара, можно принять решение подгружать или не подгружать новые объекты. А я вот в доках этого не увидел...Где можно подробней об этом посмотреть или в какой версии Qt оно есть? скажем там , путь у нас рисуется всего 4 обьекта всегда! Когда я двигаю скрол вниз, он перерисовывает эти 4 обьекта на те, которые идут по логу ну или по позиции вниз! Тогда я не вижу смысла в использовании QGraphicsXXX.Такое лучше и проще рисовать с помощью делегата для QListView. Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Bepec от Апрель 04, 2014, 15:39 У него сверхсложные итемы наверно :) Но и сам listView не рассчитан на более миллиона записей )
Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 04, 2014, 15:44 Ну я в качестве примера привел 4, а так у меня их 10-13 в окне. Ну и замечательно, хоть 25-30. :)Но я не понял как я смогу отрисовать это все в QListView. Извините , просто с делегатами вообще не знаком и мало представляю себе, что это. Самое время познакомиться. Делегат позволяет отрисовывать каждый элемент, т.е. вы получаете данные из модели и можете рисовать в указанной области элемента что захотите.Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 15:45 У него сверхсложные итемы наверно :) Но и сам listView не рассчитан на более миллиона записей ) По сути все итемы это полигоны с текстом) Вот я просто не сталкивался с делегированием ListView , поэтому как-то даже страшно, о том, что мне написали)) Ну я в качестве примера привел 4, а так у меня их 10-13 в окне. Ну и замечательно, хоть 25-30. :)Но я не понял как я смогу отрисовать это все в QListView. Извините , просто с делегатами вообще не знаком и мало представляю себе, что это. Самое время познакомиться. Делегат позволяет отрисовывать каждый элемент, т.е. вы получаете данные из модели и можете рисовать в указанной области элемента что захотите.Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 04, 2014, 15:49 А их хватит отрисовать сотни тысяч итемов или пару миллионов итемов ? Вы с моделями работали?Отрисовывается только то, что видно в данный момент. А для того, что бы вы могли задать как рисовать каждый элемент служит делегат. Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Igors от Апрель 04, 2014, 15:57 А их хватит отрисовать сотни тысяч итемов или пару миллионов итемов ? Если айтемов так много + они простые, то есть прямой смысл отрисовывать в paintEvent. Все эти делегаты а тем более QGraphicsItem довольно расходны по памяти (расплата за стервис). Определить какие пр-ки видимы - простое дерево, если надо расскажу. Если мульены только в видимой части - ограничить вывод, не лупить по экрану если там уже живого места нет. Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 16:00 А их хватит отрисовать сотни тысяч итемов или пару миллионов итемов ? Вы с моделями работали?Отрисовывается только то, что видно в данный момент. А для того, что бы вы могли задать как рисовать каждый элемент служит делегат. Тоесть он как и вью будет сразу отрисовывать мне весь список данных? А их хватит отрисовать сотни тысяч итемов или пару миллионов итемов ? Если айтемов так много + они простые, то есть прямой смысл отрисовывать в paintEvent. Все эти делегаты а тем более QGraphicsItem довольно расходны по памяти (расплата за стервис). Определить какие пр-ки видимы - простое дерево, если надо расскажу. Если мульены только в видимой части - ограничить вывод, не лупить по экрану если там уже живого места нет. Ну да про деревья хотел бы узнать, если можно) А так что-то вроде окна хотел сделать - выводить только то, что сейчас мы видим . Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 04, 2014, 16:02 Все эти делегаты а тем более QGraphicsItem довольно расходны по памяти (расплата за стервис). Не придумывайте, делегат это плюс один небольшой объект. Никаких расходов там нет и в помине.Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 04, 2014, 16:05 Тоесть он как и вью будет сразу отрисовывать мне весь список данных? Вью никогда не отрисовывает сразу весь список, только то что видно в данный момент.Делегат можно назвать внешним обработчиком paintEvent. Т.е. видно сейчас 20 элементов на экране, значит при обновлении будет вызван метод рисования делегата для этих элементов. Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 16:09 Тоесть он как и вью будет сразу отрисовывать мне весь список данных? Вью никогда не отрисовывает сразу весь список, только то что видно в данный момент.Делегат можно назвать внешним обработчиком paintEvent. Т.е. видно сейчас 20 элементов на экране, значит при обновлении будет вызван метод рисования делегата для этих элементов. Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 04, 2014, 16:13 Странно, тогда почему когда я ему подаю сцену с 100000 тысячью обьектов, он очень долго думает, а когда подумает, отрисует видимые обьекты, а потом при скролле будет тормозить. Он же отрисовывает сцену при скролле по кадрово вроде? Я про QAbstractItemView и его наследников. :)Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 16:20 Странно, тогда почему когда я ему подаю сцену с 100000 тысячью обьектов, он очень долго думает, а когда подумает, отрисует видимые обьекты, а потом при скролле будет тормозить. Он же отрисовывает сцену при скролле по кадрово вроде? Я про QAbstractItemView и его наследников. :)Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 04, 2014, 16:25 О нем я не слышал, но вижу, что наследуется от того же класса, что и QGraphicView. Правда я сейчас его посмотрел, даже не представляю как его использовать... Хотелось бы как то стандартными средствами, ибо новую модель с этого класса мне описать с моим экспириенсом пока не под силу ( Я вам предлагаю посмотреть на его наследника - QListView и разобраться с технологией model-view. Вы удивитесь, как у вас все упроститься. :)Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 16:35 О нем я не слышал, но вижу, что наследуется от того же класса, что и QGraphicView. Правда я сейчас его посмотрел, даже не представляю как его использовать... Хотелось бы как то стандартными средствами, ибо новую модель с этого класса мне описать с моим экспириенсом пока не под силу ( Я вам предлагаю посмотреть на его наследника - QListView и разобраться с технологией model-view. Вы удивитесь, как у вас все упроститься. :)Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 04, 2014, 16:39 Технология? Это вы имеете ввиду делегатов? Есть ли по ней ссылка? http://doc.crossplatform.ru/qt/4.3.2/model-view-programming.htmlНазвание: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 04, 2014, 16:41 Технология? Это вы имеете ввиду делегатов? Есть ли по ней ссылка? http://doc.crossplatform.ru/qt/4.3.2/model-view-programming.htmlНазвание: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 07, 2014, 16:07 О нем я не слышал, но вижу, что наследуется от того же класса, что и QGraphicView. Правда я сейчас его посмотрел, даже не представляю как его использовать... Хотелось бы как то стандартными средствами, ибо новую модель с этого класса мне описать с моим экспириенсом пока не под силу ( Я вам предлагаю посмотреть на его наследника - QListView и разобраться с технологией model-view. Вы удивитесь, как у вас все упроститься. :)А модель делегата лучше от кого наследовать? QAbstractItemDelegate или QItemDelegate Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 07, 2014, 16:14 QItemDelegate, а лучше сразу QStyledItemDelegate.
Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 09, 2014, 10:05 QItemDelegate, а лучше сразу QStyledItemDelegate. Я так в понимаю во втором случае можно более детально поработать со стилем?И еще вопрос ,после формирования QListView в чем его лучше отображать? Чтобы он не грузил всю "сцену" как QGraphicView? Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: Old от Апрель 09, 2014, 10:12 И еще вопрос ,после формирования QListView в чем его лучше отображать? Чтобы он не грузил всю "сцену" как QGraphicView? QListView и есть отображатель данных, которые предоставляет ему модель QAbstractItemModel и его наследники.Название: Re: Помощь С QGraphicView и QGraphicScene Отправлено: NickSin от Апрель 09, 2014, 11:26 И еще вопрос ,после формирования QListView в чем его лучше отображать? Чтобы он не грузил всю "сцену" как QGraphicView? QListView и есть отображатель данных, которые предоставляет ему модель QAbstractItemModel и его наследники. |