Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: NOOOOOB от Июль 01, 2013, 18:45



Название: QGraphicsView и скролбары
Отправлено: NOOOOOB от Июль 01, 2013, 18:45
Есть следующая ситуация - на сцену помещается некоторое количество элементов, при этом появляются полосы прокрутки на QGraphicsView
Затем сцена очищается вызовом clear(), но полосы всё равно на месте, как от них избавится?


Название: Re: QGraphicsView и скролбары
Отправлено: kambala от Июль 01, 2013, 19:09
Код
C++ (Qt)
graphicsView->horizontalScrollBar()->hide();
аналогично для второго скроллбара.


Название: Re: QGraphicsView и скролбары
Отправлено: NOOOOOB от Июль 01, 2013, 19:31
Так мне не нужно их полностью убирать, они должны снова отображаться при необходимости, желательно автоматически
Насколько я знаю они появляются в случае если сцена полностью не помещается в отображении, вроде я очищаю сцену но видимо размер не сбрасывается, иначе они бы скрылись  сами верно?


Название: Re: QGraphicsView и скролбары
Отправлено: _OLEGator_ от Июль 01, 2013, 19:35
Возможно это:
Код
C++ (Qt)
QGraphicsScene::setSceneRect ( const QRectF & rect )


Название: Re: QGraphicsView и скролбары
Отправлено: Igors от Июль 01, 2013, 19:48
Те скроллбары - атавизм, пережиток для нормальной сцены. Застрелить их - и все дела


Название: Re: QGraphicsView и скролбары
Отправлено: NOOOOOB от Июль 01, 2013, 20:07
Не совсем понял по поводу убить, совсем убирать?
P.S Проверил, действительно после вызова clear, sceneRect не обнуляется, видимо отсюда и проблема, следовательно вопрос как исправить? setSceneRect с нулевыми аргументами не срабатывает


Название: Re: QGraphicsView и скролбары
Отправлено: _OLEGator_ от Июль 01, 2013, 20:54
Попробуй с ненулевыми аргументами.
Ты какой прямоугольник туда подаешь? Просто QRectF()?


Название: Re: QGraphicsView и скролбары
Отправлено: GreatSnake от Июль 01, 2013, 21:37
По умолчанию ScrollBarPolicy должен быть Qt::ScrollBarAsNeeded.
Если нет, то выставь через
Код
C++ (Qt)
QGraphicsView::setVerticalScrollBarPolicy( Qt::ScrollBarAsNeeded );
QGraphicsView::horizontalScrollBarPolicy( Qt::ScrollBarAsNeeded );
Если не поможет, то что-то не так со сценой.