Пример размещения элементов на сцене

   
На этом шаге рассмотрим пример размещения элементов на сцене, положение которых можно изменять при помощи мыши.

   
На рис. 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();
}

   
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий