Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ фоновый рисунок сцены

Автор: anater 18.1.2010, 14:13

Доброго времени суток!

Ситуация следующая. Необходимо создать сцену фоновым рисунком которой будет схема агрегата и далее динамически будут добавляться элементы в виде кнопок пояснений и т.п. Первый раз сделал для сцены setbackground. Картинка выставилась... но в виде заливки... т.е. получил много схемок в качестве текстуры сцены. что не гут :( далее нары в инете метод addPixmap. тоже выставилось. нормально выставилось. но при добавлении элемента например addEllipce картинка отъезжает в сторонку давая место для этого самого нового элемента... Плих хелп! Как сделать нормальный фоновый рисунок агрегата на сцене и добавлять элементы поверх рисунка... чтобы ничего не разъезжалось?

Автор: Litkevich Yuriy 18.1.2010, 17:03

я просто добавляю элемент-рисунок по середине сцены:

    QSize sceneSize = QSize(640, 480);
    QPoint sceneOrigin(-320, -240);

    scene = new QGraphicsScene(QRectF(sceneOrigin, sceneSize));
    pView = new MyView(scene);

...

    QPixmap pic2("./misc/circuit.svg");
    QSize pic2Size = pic2.size();
    QGraphicsPixmapItem* circuit = new QGraphicsPixmapItem(pic2);
    int x = sceneSize.width()/2 - pic2Size.width()/2;
    int y = sceneSize.height()/2 - pic2Size.height()/2;
    circuit->setPos(sceneOrigin.x() + x, sceneOrigin.y() + y);
    //circuit->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
    circuit->setZValue(-1);
флаг перемещения и выделения не устанавливается.
Z-порядок отрицательный, а у остальных элементов положительный или нулевой (по умолчанию), получается так:

Автор: anater 18.1.2010, 17:42

Цитата(Litkevich Yuriy @ 18.1.2010, 17:03) *
я просто добавляю элемент-рисунок по середине сцены:
...


Симпатишное решение что то я до такого и не допер.... А в сцену как добавляешь?

Автор: Litkevich Yuriy 18.1.2010, 18:40

Цитата(anater @ 18.1.2010, 20:42) *
А в сцену как добавляешь?
так же как и другие элементы
scene->addItem(circuit);


anater, не цитируй целыми сообщениями

Автор: anater 18.1.2010, 19:14

Сделал как ты сказал. спасибо. заработало.
Вот только одно маленькое но.
Элементы у мене на панели подвижные, и если я начинаю элементы двигать то и картинка иногда тоже съезжает. Можно сделать по размеру картинки но по моему это не совсем хорошо. Есть варианты как ее намертво привязать к центру экрана?

Автор: Litkevich Yuriy 18.1.2010, 19:24

не понял, что и почему съезжает. Линейки прокрутки появляются на представлении?

Автор: anater 18.1.2010, 19:38

Цитата(Litkevich Yuriy @ 18.1.2010, 19:24) *
не понял, что и почему съезжает. Линейки прокрутки появляются на представлении?

Нет я их отрубил. Прокрутки быть не должно. Просто при игре с элементом он то нормально на рисунке лежит но если чуть выше или ниже найти точку то рисунок приподнимается или опускается.

Автор: Litkevich Yuriy 18.1.2010, 19:42

Цитата(anater @ 18.1.2010, 22:38) *
но если чуть выше или ниже найти точку то рисунок приподнимается или опускается.
приведи два снимка, до того как съехало и после. А то я не совсем понимаю, что происходит.

Автор: anater 18.1.2010, 20:04

Цитата(Litkevich Yuriy @ 18.1.2010, 19:24) *
не понял, что и почему съезжает. Линейки прокрутки появляются на представлении?

Да к стати а метод drawBackground не пробывал реализовывать. А то я написал на форуме nokia и они пока молчат.

Цитата(Litkevich Yuriy @ 18.1.2010, 19:42) *
Цитата(anater @ 18.1.2010, 22:38) *
но если чуть выше или ниже найти точку то рисунок приподнимается или опускается.
приведи два снимка, до того как съехало и после. А то я не совсем понимаю, что происходит.

Что то не смог добавить сюды рисунки. Но выложил на ftp.
ftp://85.94.44.102/pub/normal.bmp
ftp://85.94.44.102/pub/not_normal.bmp

Черный круг это дополнительный элемент который при старте находится в центре картинки фоновой. Но на рисунке видно что если я начинаю этот элемент выставлять на картинке то фоновая картинка едет.

Автор: Litkevich Yuriy 18.1.2010, 20:54

anater, ужас! Зачем bmp, выложи лучше png, а то ведь не дождёшся когда загрузится.

Автор: anater 18.1.2010, 21:05

Цитата(Litkevich Yuriy @ 18.1.2010, 20:54) *
anater, ужас! Зачем bmp, выложи лучше png, а то ведь не дождёшся когда загрузится.

Да уж :) Разобрался. С размерами сцены немного дал маху. А так сделал по твоему варианту и все работает :)
Спасибо!

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)