crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Неккоретные размеры QGraphicsScene
IOException
  опции профиля:
сообщение 31.5.2014, 15:20
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 31.5.2014
Пользователь №: 4146

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




Репутация:   0  


Добрый день, при изучении графики в Qt, столкнулся с такой проблемой. Есть унаследованный от QGraphicsView виджет, на котором располагается QGraphicsScene с различными элементами. Задача -- при ресайзе виджета, изменять у сцены ограничивающий прямоугольник, по размер виджета. Вот мой код объявления виджета и сцены:
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),  ui(new Ui::MainWindow){
    ui->setupUi(this);
     scene= new QGraphicsScene(ui->area);
     ui->area->scale(1,-1);
     arc *obj1=new arc();
     obj1->setX(200);obj1->setY(200);
     obj1->setSize(11);
     obj1->setSpeed(1);
     obj1->setFlag(QGraphicsItem::ItemIsMovable);
     obj2->setFlag(QGraphicsItem::ItemIsMovable);
     scene->addItem(obj1);
     ui -> area -> setRenderHints ( QPainter :: Antialiasing
             |  QPainter :: SmoothPixmapTransform
             |  QPainter :: TextAntialiasing );
     ui->area->setScene(scene);
     ui->area->setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
     ui->area->setCacheMode(QGraphicsView::CacheBackground);
     ui->area->setInteractive(true);
}


Код наследника QGraphicsView:
void DrawArea::resizeEvent(QResizeEvent *evnt)
{
    if(scene()){
        scene()->setSceneRect(QRect(QPoint(-evnt->size().width()/2,-evnt->size().height()/2),evnt->size()));

    }
    fitInView(scene()->sceneRect(),Qt::KeepAspectRatio);
    QGraphicsView::resizeEvent(evnt);
}

Собственно проблема в том, что размеры сцены не соответствуют размерам виджета: сцена по сути ограничена лишь объектами, как-будто setSceneRect() не выполняется, хотя это не так. Прошу помочь, сам уже не знаю в чем может быть дело...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 31.5.2014, 16:45
Сообщение #2


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

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

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




Репутация:   34  


советую прицепить проект с примером проблемы, чтобы кто-то смог поэкспериментировать :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
IOException
  опции профиля:
сообщение 31.5.2014, 17:31
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 31.5.2014
Пользователь №: 4146

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




Репутация:   0  


Цитата(Алексей1153 @ 31.5.2014, 17:45) *
советую прицепить проект с примером проблемы, чтобы кто-то смог поэкспериментировать :)

Благодарю за скорый ответ! Исходники выложил, надеюсь на помощь и здравую критику.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.4.2024, 0:20