Название: Размещение QGraphicsItem'ов на QGraphicsScene - проблемы. Отправлено: FlexoID от Июнь 09, 2009, 16:08 Итак, есть QGraphicsView (выступает в роли главного окна)/QGraphicsScene и QGraphicsItem (вообще их много будет). Немогу нормально разместить последних на сцене. Сто раз перечитал в хелпе по поводу преобразования координат и всего прочего, так что просто туда не посылайте. Вобщем, в качестве фона QGraphicsScene у меня QPixmap. Окно должно быть по размеру равно картинке, поэтому делаю так:
Код: view->resize(bgpixmap.size()); Что мне можете тут посоветовать? Как правильно сделать View с Scene'ой фиксированного размера, и чтобы нормально можно было размещать на ней Item'ы? Может есть другие, более правильные способы? Еще было бы неплохо иметь возможность задавать координаты Item'ов с таким расчетом, что (0,0) - левый верхний урол. Для меня так привычнее, удабнее и нагляднее как-то. Делал конструкции из нескольких mapTo*** - нужного результата так и не добился. Зараннее благодарю. Название: Re: Размещение QGraphicsItem'ов на QGraphicsScene - проблемы. Отправлено: BaltikS от Июнь 09, 2009, 19:31 По моим наблюдениям:
1) размер сцены зафиксировать нельзя. Она автоматом расширяется если итем находится вне размеров сцены. 2) по центру можно выровнять у QGraphicsView::centerOn(item) Я бы сделал в вашем случае по другому... 1) Зафиксировал бы размер View 2) Создал бы QGraphicsPixmapItem(с непермещаемым флагом) и поместил бы его по центру. 3) Все итемы уже создавал бы уже на этом пиксмапитеме создавал остальные элементы... Название: Re: Размещение QGraphicsItem'ов на QGraphicsScene - проблемы. Отправлено: mal от Июнь 09, 2009, 20:51 не могу до конца вкурить, что тебе надо, потому как понял:
фоном на сцене использую картинку , после создания сцены, кидаю на нее пустой пиксмап: Код: QPixmapItem *pxm_item; // объявлена где то в h-файле далее, когда гружу на сцену реальную картинку по команде делаю предположим так: Код: void slot_set_img(QImage *img) а дальше, когда какие либо еще айтемы добавляются на сцену - они добавляются туда, куда им указано при создании либо функцией айтема setPos. ЗЫ или я чего то не понимаю в сути вопроса. Название: Re: Размещение QGraphicsItem'ов на QGraphicsScene - проблемы. Отправлено: FlexoID от Июнь 09, 2009, 21:33 Вообще я отрисовывал фон, переопределяя drawBackground в Scene, и видно картинка располагалась не по центру, а как ей хотелось. Сейчас буду пробовать делать фон как Item. Сасибо, отпишу, если получится.
Название: Re: Размещение QGraphicsItem'ов на QGraphicsScene - проблемы. Отправлено: FlexoID от Июнь 09, 2009, 22:21 При таком раскладе получилось, что точка (0,0) находиться почти в левом верхнем углу фоновой картинки, т.е. она расположилась не по центру. Опять какие-то непонятки получаются...
Название: Re: Размещение QGraphicsItem'ов на QGraphicsScene - проблемы. Отправлено: Icoz от Июль 21, 2009, 09:24 У меня схожая проблема, но с одним ньюансом: у меня используются qgraphicslayout.
делаю так: 1) создаю view, делаю resize(320,240); (пишу для кпк) 2) создаю QGraphicsGridLayout, размещаю все на нем. 3) создаю form как qgraphicswidget, делаю form->setLayout(grid_layout); 4) scene->additem(form); 5) view->fitInView(form); В результате, форма получается уже, чем окно и больше по высоте. Примерно 250 на 250 пиксел. Пробовал centerOn - почти та же фигня. Как мне заставить form быть такой же как view? Название: Re: Размещение QGraphicsItem'ов на QGraphicsScene - проблемы. Отправлено: Icoz от Июль 21, 2009, 16:13 Вроде бы нашел решение.
Код: view->resize(320,240); PS. При этом не помешает Код: view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); |