crossplatform.ru

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


  Ответ в Растягивание сцены под размер view
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 12.9.2010, 19:56
  вот у меня такой слот есть, подгоняет размер сцены под субокошко в котором отображается сцена:
void MdiChild::fit()
{
    QRectF r = scene->sceneRect();
    view->fitInView(r, Qt::KeepAspectRatio);
}
может подойдёт тебе на ресайз
Алексей1153 Дата 12.9.2010, 19:56
  чисто телепатически, спасёт
update();


хотя, без скрина, хотя бы, не совсем понятна проблема
quarz Дата 12.9.2010, 19:49
  Делаю составной виджет. Если упростить, то выглядит он так: в лэйауте лежит 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);


Компилирую, вижу, что все правильно - сцена вместе с прямоугольником растянулась на весь виджет. Ресайзю виджет, а прямоугольник начинает куда-то дергаться. Левая граница смещается то влево то вправо. Может я масштабирование не верно делаю?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 4:50