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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsView и скролбары  (Прочитано 3881 раз)
NOOOOOB
Гость
« : Июль 01, 2013, 18:45 »

Есть следующая ситуация - на сцену помещается некоторое количество элементов, при этом появляются полосы прокрутки на QGraphicsView
Затем сцена очищается вызовом clear(), но полосы всё равно на месте, как от них избавится?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июль 01, 2013, 19:09 »

Код
C++ (Qt)
graphicsView->horizontalScrollBar()->hide();
аналогично для второго скроллбара.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
NOOOOOB
Гость
« Ответ #2 : Июль 01, 2013, 19:31 »

Так мне не нужно их полностью убирать, они должны снова отображаться при необходимости, желательно автоматически
Насколько я знаю они появляются в случае если сцена полностью не помещается в отображении, вроде я очищаю сцену но видимо размер не сбрасывается, иначе они бы скрылись  сами верно?
Записан
_OLEGator_
Гость
« Ответ #3 : Июль 01, 2013, 19:35 »

Возможно это:
Код
C++ (Qt)
QGraphicsScene::setSceneRect ( const QRectF & rect )
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Июль 01, 2013, 19:48 »

Те скроллбары - атавизм, пережиток для нормальной сцены. Застрелить их - и все дела
Записан
NOOOOOB
Гость
« Ответ #5 : Июль 01, 2013, 20:07 »

Не совсем понял по поводу убить, совсем убирать?
P.S Проверил, действительно после вызова clear, sceneRect не обнуляется, видимо отсюда и проблема, следовательно вопрос как исправить? setSceneRect с нулевыми аргументами не срабатывает
Записан
_OLEGator_
Гость
« Ответ #6 : Июль 01, 2013, 20:54 »

Попробуй с ненулевыми аргументами.
Ты какой прямоугольник туда подаешь? Просто QRectF()?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Июль 01, 2013, 21:37 »

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

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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