211_QT_在QGraphicsView窗口中显示矩形、三角形、直线、文字、椭圆,由QGraphicsItem中各类型创建在QGraphicsScene中

65 篇文章 7 订阅

在这里插入图片描述在这里插入图片描述

/*矩形*/
void MainWindow::on_actRectangle_triggered()
{
    /*矩形的左上角起始坐标点-50 , -30 */
    QGraphicsRectItem *item = new QGraphicsRectItem(-50 , -30 ,100, 60);
    item->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsSelectable |
                  QGraphicsItem::ItemIsMovable );

    item->setBrush(Qt::yellow);
    /*随机到一个位置*/
    item->setPos(-100 + (qrand() % 200) , -60 + (qrand() % 120));

/*
 * 图形的id号
 * 针对key:Itemid,设置value:seqNum
*/
    item->setData(Itemid, ++seqNum);
    item->setData(ItemDescription, "QGraphicsRectItem");/*图形的描述*/
    scene->addItem(item);
    scene->clearSelection();
    item->setSelected(true);
}

void MainWindow::on_actCircle_triggered()
{
    /*圆形的左上角起始坐标点-50 , -50 */
    auto *item = new QGraphicsEllipseItem(-50 , -50 ,100, 60);
    item->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsSelectable |
                  QGraphicsItem::ItemIsMovable );

    item->setBrush(Qt::blue);
    /*随机到一个位置*/
    item->setPos(-100 + (qrand() % 200) , -60 + (qrand() % 120));
    item->setData(Itemid, ++seqNum);/*图形的id号*/
    item->setData(ItemDescription, "QGraphicsEllipseItem");/*图形的描述*/
    scene->addItem(item);
    scene->clearSelection();
    item->setSelected(true);
}

void MainWindow::on_actTriangle_triggered()
{
    /*三角形的左上角起始坐标点-50 , -50 */
    auto *item = new QGraphicsPolygonItem;
    QPolygonF points;
    points.append(QPoint(0, -40));
    points.append(QPoint(60, 40));
    points.append(QPoint(-60, 40));

    item->setPolygon(points);/*三角形设置,由3个点组成*/
    item->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsSelectable |
                  QGraphicsItem::ItemIsMovable );

    item->setBrush(Qt::red);
    /*随机到一个位置*/
    item->setPos(-100 + (qrand() % 200) , -60 + (qrand() % 120));
    item->setData(Itemid, ++seqNum);/*图形的id号*/
    item->setData(ItemDescription, "QGraphicsPolygonItem");/*图形的描述*/
    scene->addItem(item);
    scene->clearSelection();
    item->setSelected(true);
}

void MainWindow::on_actStraight_Line_triggered()
{
    /*直线的左上角起始坐标点-100, 0 */
    auto *item = new QGraphicsLineItem(-100, 0, 100, 0);
    item->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsSelectable |
                  QGraphicsItem::ItemIsMovable );

    QPen pen;
    pen.setColor(Qt::black);
    pen.setWidth(5);
    item->setPen(pen);
    /*随机到一个位置*/
    item->setPos(-100 + (qrand() % 200) , -60 + (qrand() % 120));
    item->setData(Itemid, ++seqNum);/*图形的id号*/
    item->setData(ItemDescription, "QGraphicsLineItem");/*图形的描述*/
    scene->addItem(item);
    scene->clearSelection();
    item->setSelected(true);
}

void MainWindow::on_actTrapezoid_triggered()
{
    /*梯形的左上角起始坐标点-50 , -50 */
    auto *item = new QGraphicsPolygonItem;
    QPolygonF points;
    points.append(QPoint(-40, -40));
    points.append(QPoint(40, -40));
    points.append(QPoint(80, 40));
    points.append(QPoint(-80, 40));


    item->setPolygon(points);/*梯形设置,由4个点组成*/

    item->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsSelectable |
                  QGraphicsItem::ItemIsMovable );

    item->setBrush(Qt::gray);
    /*随机到一个位置*/
    item->setPos(-100 + (qrand() % 200) , -60 + (qrand() % 120));
    item->setData(Itemid, ++seqNum);/*图形的id号*/
    item->setData(ItemDescription, "QGraphicsPolygonItem");/*图形的描述*/
    scene->addItem(item);
    scene->clearSelection();
    item->setSelected(true);
}

void MainWindow::on_acItem_Text_triggered()
{
    /*文字*/
    QString str = QInputDialog::getText(this, "Input dialog", "please enter:");
    auto *item = new QGraphicsTextItem(str);
    item->setFlags(QGraphicsItem::ItemIsFocusable |
                   QGraphicsItem::ItemIsSelectable |
                   QGraphicsItem::ItemIsMovable );

    QFont font;
    font.setPointSize(20);
    item->setDefaultTextColor(Qt::darkBlue);
    item->setFont(font);
    item->setTextWidth(10);
    /*随机到一个位置*/
    item->setPos(-100 + (qrand() % 200) , -60 + (qrand() % 120));
    item->setData(Itemid, ++seqNum);/*图形的id号*/
    item->setData(ItemDescription, "QGraphicsTextItem");/*图形的描述*/
    scene->addItem(item);
    scene->clearSelection();
    item->setSelected(true);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扳手的海角

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值