На этом шаге рассмотрим пример размещения элементов на сцене, положение которых можно изменять при помощи мыши.
На рис. 1 показано размещение четырех элементов на сцене.
Рис.1. Отображение элементов, положение которых можно изменять при помощи мыши
int main(int argc, char** argv) { //создаем объект приложения app QApplication app(argc, argv); //создаем объекты классов QGraphicsScene и QGraphicsView QGraphicsScene scene(QRectF(-100, -100, 300, 300)); /*виджет view при создании получает адрес объекта scene, но в качестве альтернативы можно воспользоваться методом QGraphicsView::setScene()*/ QGraphicsView view(&scene); /*вызовами методов QGraphicsScene::addPixmap(), QGraphicsScene::addText() и QGraphicsScene::addLine() в сцену добавляются элементы растрового изображения, текста и линии*/ QGraphicsPixmapItem* pPixmapItem = scene.addPixmap(QPixmap("koala.jpg")); /*для того чтобы все добавленные элементы можно было перемещать мышью, эта возможность активизируется передачей в метод setFlags() значения QGraphicsItem::ItemIsMoveable*/ pPixmapItem->setFlags(QGraphicsItem::ItemIsMovable); QGraphicsTextItem* pTextItem = scene.addText("Передвигай нас с помощью мыши"); pTextItem->setFlags(QGraphicsItem::ItemIsMovable); QGraphicsLineItem* pLineItem = scene.addLine(QLineF(-10, -10, -80, -80), QPen(Qt::red, 2)); pLineItem->setFlags(QGraphicsItem::ItemIsMovable); создаем прямоугольный элемент QGraphicsRectItem* pRectItem = new QGraphicsRectItem(); /*вызов метода setPen() устанавливает черный цвет пера для контурной линии элемента*/ pRectItem->setPen(QPen(Qt::black)); /*кисть, предназначенная для заливки фона элемента, получает зеленый цвет с помощью метода setBrush()*/ pRectItem->setBrush(QBrush(Qt::green)); //метод setRect() задает расположение и размеры прямоугольной области pRectItem->setRect(QRectF(-30, -30, 120, 80)); pRectItem->setFlags(QGraphicsItem::ItemIsMovable); scene.addItem(pRectItem); /*вызовом метода show() сцена отображается в представлении и ее элементы становятся видимыми на экране*/ view.show(); return app.exec(); }
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг