Автор: 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, а то ведь не дождёшся когда загрузится.
Да уж
Разобрался. С размерами сцены немного дал маху. А так сделал по твоему варианту и все работает
Спасибо!