212_QT_鼠标双击事件,改变View窗口中图形的颜色

65 篇文章 6 订阅

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

在这里插入图片描述

void MainWindow::on_mousedoubleclick(QPoint point)
{
    QPointF pointfScene = ui->gView->mapToScene(point);
    QGraphicsItem *itemScene = NULL;
    itemScene = scene->itemAt(pointfScene, ui->gView->transform());
    if(itemScene == NULL)
        return;

/*
 * QGraphicsItem *itemScene相当于基类
 * QGraphicsRectItem *item类似派生类
 * 进行下行转换
*/
    switch (itemScene->type())
    {
        case QGraphicsRectItem::Type:{
            QGraphicsRectItem *item;
            item = qgraphicsitem_cast<QGraphicsRectItem*>(itemScene);
            QColor color = item->brush().color();/*自动获取当前项目图形颜色*/
            color = QColorDialog::getColor(color, NULL, "choose a color ");
            if(color.isValid())/*如果颜色有效则返回true*/
                item->setBrush(QBrush(color));
        break;
        }
        case QGraphicsEllipseItem::Type:{
            QGraphicsEllipseItem *item;
            item = qgraphicsitem_cast<QGraphicsEllipseItem*>(itemScene);
            QColor color = item->brush().color();/*自动获取当前项目图形颜色*/
            color = QColorDialog::getColor(color, NULL, "choose a color ");
            if(color.isValid())
                item->setBrush(QBrush(color));
        break;
        }
        case QGraphicsPolygonItem::Type:{
            QGraphicsPolygonItem *item;
            item = qgraphicsitem_cast<QGraphicsPolygonItem*>(itemScene);
            QColor color = item->brush().color();/*自动获取当前项目图形颜色*/
            color = QColorDialog::getColor(color, NULL, "choose a color ");
            if(color.isValid())
                item->setBrush(QBrush(color));
        break;
        }
        case QGraphicsLineItem::Type:{
            QGraphicsLineItem *item;
            item = qgraphicsitem_cast<QGraphicsLineItem*>(itemScene);
            QColor color = item->pen().color();/*自动获取当前项目图形颜色*/
            color = QColorDialog::getColor(color, NULL, "choose a color ");
            if(color.isValid())
                item->setPen(QPen(color));
        break;
        }
        case QGraphicsTextItem::Type:{
            QGraphicsTextItem *item;
            item = qgraphicsitem_cast<QGraphicsTextItem*>(itemScene);
            QColor color = item->defaultTextColor();/*自动获取当前项目图形颜色*/
            color = QColorDialog::getColor(color, NULL, "choose a color ");
            if(color.isValid())
                item->setDefaultTextColor(color);
        break;
        }
        default:
            break;

    }
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

扳手的海角

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

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

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

打赏作者

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

抵扣说明:

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

余额充值