Название: GraphicsScene резетнуть Отправлено: Azazello от Ноябрь 01, 2018, 14:08 QGraphicsScene::sceneRect растет при добавлении итемов, что логично. Но когда очищаем сцену (clear), она не думает уменьшать размер.
Возможно ли обнулить сцену, как будто её только-что создали? Возможно, есть другие решение этой проблемы? itemsBoundingRect()? Солгаситесь, странное поведение класса (объекта), если мы не можем вернуть его в первоночальное состояние. Название: Re: GraphicsScene резетнуть Отправлено: ssoft от Ноябрь 02, 2018, 07:46 Цитировать If unset, or if set to a null QRectF, sceneRect() will return the largest bounding rect of all items on the scene since the scene was created (i.e., a rectangle that grows when items are added to or moved in the scene, but never shrinks). Код: setSceneRect( QRectF() ); Название: Re: GraphicsScene резетнуть Отправлено: Azazello от Ноябрь 02, 2018, 09:24 If unset, or if set to a null QRectF, sceneRect() will return the largest bounding rect of all items on the scene since the scene was created (i.e., a rectangle that grows when items are added to or moved in the scene, but never shrinks). Код: setSceneRect( QRectF() ); i.e., a rectangle that grows when items are added to or moved in the scene, but never shrinks. setSceneRect( QRectF() ); не поможет. Пробовал. Название: Re: GraphicsScene резетнуть Отправлено: lit-uriy от Ноябрь 02, 2018, 11:38 Если сцену нужно ужать до текущих элементов, то без изврата никак.
Ну а если на сцене элементов не осталось - прибить сцену, создать новую. Название: Re: GraphicsScene резетнуть Отправлено: Azazello от Ноябрь 02, 2018, 12:38 Если сцену нужно ужать до текущих элементов, то без изврата никак. Ну а если на сцене элементов не осталось - прибить сцену, создать новую. Понятно. Спасибо. Прибить сцену легко только когда начинаешь разработку и это придусмотрел в архитектуре, а сейчас прибивать сложновато и не хочется. Пошел извратом Код:
Название: Re: GraphicsScene резетнуть Отправлено: lit-uriy от Ноябрь 02, 2018, 13:58 Сейчас уже не найду свой код, но такой простой, как у тебя какую-то проблему вызывал "во время эксплуатации", поэтому у меня много более сильный изврат был.
Что-то было связано с масштабированием/навигацией. Название: Re: GraphicsScene резетнуть Отправлено: Igors от Ноябрь 02, 2018, 16:38 Пошел извратом 2D/3D "cцена" в принципе не ограничена в пр-ве. Напр юзер хочет поставить новый объект на расстоянии 1км от имеющихся - почему нет, это совершенно корректно. Поэтому обязательно должна быть бубочка "Fit" (вписать сцену в область просмотра), но навязывать эту операцию юзеру (делать ее автоматом как у Вас) не нужно, только по запросуНазвание: Re: GraphicsScene резетнуть Отправлено: Azazello от Ноябрь 05, 2018, 19:57 Пошел извратом 2D/3D "cцена" в принципе не ограничена в пр-ве. Напр юзер хочет поставить новый объект на расстоянии 1км от имеющихся - почему нет, это совершенно корректно. Поэтому обязательно должна быть бубочка "Fit" (вписать сцену в область просмотра), но навязывать эту операцию юзеру (делать ее автоматом как у Вас) не нужно, только по запросуНу, это смотря какая задумка у UI. Вообще немного замучался с GraphicsView. Давайте представим задачу - колебания суточной температуры. view это все показывает, пользователь не взаимодейтвует с GraphicsView напрямую (только в данном примере). Но вот вы захотели посмотреть не суточные колебания, а колебания за неделю этой самой температуры. Понятно, что предыдущая сцена идет лесом и все строится заново. Конечно, вы можете сказать, что я переборщил с GraphicsView и рисуй ручками давай в painter. В данном случае это не проблема, но при добавлении интерактивности будут сложности. Название: Re: GraphicsScene резетнуть Отправлено: Racheengel от Ноябрь 05, 2018, 20:04 а чем не устраивает вариант
setSceneRect( "какой-то дефолтный рект" ); Название: Re: GraphicsScene резетнуть Отправлено: Azazello от Ноябрь 05, 2018, 20:16 а чем не устраивает вариант setSceneRect( "какой-то дефолтный рект" ); А какой дефолтный Rect. Данные то подкачиваются динамически. Сцена растет. Если я поставлю какой-то дефолтный (пусть максимальный), тогда мне прийдется каждый раз опредлять свой рект для view. Мне же нужно чтобы ползунок (scroll) показывал только существующие данные, чтобы я его передвигая мог расширять сцену. Да обычное поведению view в модели Название: Re: GraphicsScene резетнуть Отправлено: Racheengel от Ноябрь 06, 2018, 19:06 А какой дефолтный Rect. А какой тогда рект при первом создании сцены? Название: Re: GraphicsScene резетнуть Отправлено: Azazello от Ноябрь 06, 2018, 19:20 А какой дефолтный Rect. А какой тогда рект при первом создании сцены? Название: Re: GraphicsScene резетнуть Отправлено: Racheengel от Ноябрь 07, 2018, 18:17 Но нулевой то нельзя, зато можно 1х1, например.
|