crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Растягивание сцены под размер view
quarz
  опции профиля:
сообщение 12.9.2010, 19:49
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 3.11.2009
Пользователь №: 1202

Спасибо сказали: 5 раз(а)




Репутация:   0  


Делаю составной виджет. Если упростить, то выглядит он так: в лэйауте лежит QGraphicsView. При изменении размеров виджета graphicsView, соответственно, тоже должен растягиваться.
Уже второй день пытаюсь разобраться как сделать, чтобы вместе с graphicsView растягивалась и сцена.
К примеру, начальный размер виджета 200х32. Сцена и вью имеют такие же размеры.
resize(200, 32);
ui.graphicsView->setScene(scene);
ui.graphicsView->setSceneRect(0, 0, 200, 32);


При изменении размеров виджета я масштабирую сцену:
void MyWidget::resize(int w, int h){
    QMatrix m = ui.graphicsView->matrix();
    m.setMatrix(w/200.0, m.m12(), m.m21(), h/32.0, m.dx(), m.dy());
    ui.graphicsView->setMatrix(m);
    ui.graphicsView->setSceneRect(0, 0, 200, 32);
}


Теперь я рисую на сцене прямоугольник, охватывающий всю сцену:
scene->addRect(0, 0, 200, 32);


Компилирую, вижу, что все правильно - сцена вместе с прямоугольником растянулась на весь виджет. Ресайзю виджет, а прямоугольник начинает куда-то дергаться. Левая граница смещается то влево то вправо. Может я масштабирование не верно делаю?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 12.9.2010, 19:56
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


чисто телепатически, спасёт
update();


хотя, без скрина, хотя бы, не совсем понятна проблема
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.9.2010, 19:56
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


вот у меня такой слот есть, подгоняет размер сцены под субокошко в котором отображается сцена:
void MdiChild::fit()
{
    QRectF r = scene->sceneRect();
    view->fitInView(r, Qt::KeepAspectRatio);
}
может подойдёт тебе на ресайз
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 9:21