Название: Расположение элементов в QGraphicsScene Отправлено: SeverusSnape от Апрель 02, 2011, 11:59 Добрый день! Впервые начал использовать QgraphicsView(Scene) и столкнулся с небольшой проблемой: создаю QGraphicsPixmapItem в Scene, но не могу указать ему расположение, например в левом верхем углу с отступом от верхнего и левого края в 20 пикселей. SetPos для итема не помогает, он, итем, все равно рисуется по центру.
Для View пытался пробовать устанавливать setAligment с флагами, но он рисует, действительно в верхнем левом углу, но впритык. А мне ко всему процему за этим итемом (справа от него) нужно расположить еще несколько. Так вот, скажите, пожалуйста - как можно устанавливать произвольные координаты для итемов в Scene? Заранее благодарен! Название: Re: Расположение элементов в QGraphicsScene Отправлено: madRoger от Апрель 02, 2011, 12:14 Попробуйте воспользоваться методом QGraphicsView::setSceneRect для принудительного указания области сцены.
При добавлении QGraphicsItem в QGraphicsScene происходит автоматическое центрирование на этом Итеме. Вероятно, в этом проблема. Название: Re: Расположение элементов в QGraphicsScene Отправлено: SeverusSnape от Апрель 02, 2011, 12:34 Пробовал, но что-то не получается:
QGraphicsView* topView = new QGraphicsView(this); topView->setBackgroundBrush(QBrush(QColor(229, 221, 200))); topView->setScene(new QGraphicsScene(this)); // topView->setAlignment(Qt::AlignLeft | Qt::AlignTop); // topView->setContentsMargins(20,20,20,20); topView->setSceneRect(0,0,topView->width(),topView->height()); Мне нужно получить следующее: (см. вложение) Спасибо! Название: Re: Расположение элементов в QGraphicsScene Отправлено: GreatSnake от Апрель 02, 2011, 12:40 Цитировать topView->setSceneRect(0,0,topView->width(),topView->height()); А теперь подумай и сделай вывод о размере topView при этом вызове.Название: Re: Расположение элементов в QGraphicsScene Отправлено: madRoger от Апрель 02, 2011, 12:55 только что попробовал программно. Все ОК.
QGraphicsPixmapItem *px = new QGraphicsPixmapItem(QPixmap("C:/pix.png")); QGraphicsTextItem *tx1 = new QGraphicsTextItem("qtGraphic Test TextItem N1"); QGraphicsTextItem *tx2 = new QGraphicsTextItem("qtGraphic Test TextItem N2"); px->setPos(20.0,20.0); gs->addItem(px); tx1->setPos(105.0,20.0); gs->addItem(tx1); tx2->setPos(105.0,40.0); gs->addItem(tx2); ui->gv->setScene( gs ); ui->gv->setSceneRect(0.0,0.0,400.0,400.0); где gv - QGraphicsView, gs - QGraphicsScene. 400Х400 размер gv. Координаты взял примерно, мой пиксмап размером 64Х64. Вам в вашем случае нужно подставить свои цифры. UPD: Какой размер у topView до запуска программы ? Название: Re: Расположение элементов в QGraphicsScene Отправлено: SeverusSnape от Апрель 02, 2011, 15:41 Спасибо всем. Помогли! Разобрался - проблема была в размерах сцены.
|