当前位置: 首页 > news >正文

西安网站维护推广山大优秀网站建设2018年度

西安网站维护推广,山大优秀网站建设2018年度,WordPress显示访客ip,三峡建设管理有限公司网站CAD 一.前言二.界面设计三.提升类四.接受槽函数五.实现图形action1.矩形2.椭圆3.圆形4.三角形5.梯形6.直线7.文本 六.总结 一.前言 用我们上节课刚刚学过的GraphicsView架构来绘制一个可以交互的CAD项目! 效果图: 二.界面设计 添加2个工具栏 需要蔬菜的dd我! 添加action: …

CAD

  • 一.前言
  • 二.界面设计
  • 三.提升类
  • 四.接受槽函数
  • 五.实现图形action
    • 1.矩形
    • 2.椭圆
    • 3.圆形
    • 4.三角形
    • 5.梯形
    • 6.直线
    • 7.文本
  • 六.总结

一.前言

用我们上节课刚刚学过的GraphicsView架构来绘制一个可以交互的CAD项目!
效果图:
在这里插入图片描述

二.界面设计

添加2个工具栏
在这里插入图片描述
需要蔬菜的dd我!
添加action:
在这里插入图片描述

拖放界面:
在这里插入图片描述
设置一些基本的属性:
在这里插入图片描述

三.提升类

自定义一个类,继承QGraphicsView
在这里插入图片描述
找到鼠标和键盘事件.
在这里插入图片描述
添加信号和鼠标事件和键盘事件:
在这里插入图片描述
鼠标事件和键盘事件的重写,功能就是发出信号带出视图坐标:

mygraphicsview.cpp中

#include "mygraphicsview.h"
#include <QMouseEvent>MyGraphicsView::MyGraphicsView(QWidget *parent) : QGraphicsView(parent)
{}void MyGraphicsView::keyPressEvent(QKeyEvent *event)
{emit keyPress(event);QGraphicsView::keyPressEvent(event);
}void MyGraphicsView::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){QPoint point=event->pos();emit mousePress(point);}QGraphicsView::mousePressEvent(event);
}void MyGraphicsView::mouseDoubleClickEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){QPoint point=event->pos();emit mouseDoubleClick(point);}QGraphicsView::mouseDoubleClickEvent(event);
}void MyGraphicsView::mouseMoveEvent(QMouseEvent *event)
{QPoint point=event->pos();emit mouseMove(point);QGraphicsView::mouseMoveEvent(event);
}

类提升
在这里插入图片描述

四.接受槽函数

用这个命名格式可以自动关联哦
在这里插入图片描述
想做个空实现,不然运行会报错,上面这些都是前面我们讲过的,就不细讲了,接下来进行这节课的重点.

创建场景:
在这里插入图片描述

五.实现图形action

1.矩形

void MainWindow::on_actionRect_triggered()
{QGraphicsRectItem*item=new QGraphicsRectItem(-100,-50,200,100);item->setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsFocusable);item->setBrush(QBrush(Qt::blue));item->setZValue(ZVaule++);//堆叠的等级,越高越在表面,z的高度item->setData(ITEMID,itemID++);//可以为图形项自定义数据item->setData(ITEMINFO,"矩形");item->setPos(qrand()%50,qrand()%50);//在坐标附近生成图形项scene->addItem(item);scene->clearSelection();//清空选择的item->setSelected(true);//添加的设置选中
}

在构造函数中加一个随机种子:
在这里插入图片描述
在头文件中加
在这里插入图片描述
运行结果:
在这里插入图片描述

2.椭圆

void MainWindow::on_actionEllisp_triggered()
{QGraphicsEllipseItem*item=new QGraphicsEllipseItem(-100,-50,200,100);item->setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsFocusable);item->setBrush(QBrush(Qt::green));item->setZValue(ZVaule++);//堆叠的等级,越高越在表面,z的高度item->setData(ITEMID,itemID++);//可以为图形项自定义数据item->setData(ITEMINFO,"椭圆");item->setPos(qrand()%50,qrand()%50);//在坐标附近生成图形项scene->addItem(item);scene->clearSelection();//清空选择的item->setSelected(true);//添加的设置选中
}

运行结果:
在这里插入图片描述

3.圆形

void MainWindow::on_actionCircle_triggered()
{QGraphicsEllipseItem*item=new QGraphicsEllipseItem(-100,-50,200,200);item->setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsFocusable);item->setBrush(QBrush(Qt::yellow));item->setZValue(ZVaule++);//堆叠的等级,越高越在表面,z的高度item->setData(ITEMID,itemID++);//可以为图形项自定义数据item->setData(ITEMINFO,"圆形");item->setPos(qrand()%50,qrand()%50);//在坐标附近生成图形项scene->addItem(item);scene->clearSelection();//清空选择的item->setSelected(true);//添加的设置选中
}

运行结果:
在这里插入图片描述

4.三角形

void MainWindow::on_actionSanjiao_triggered()
{QGraphicsPolygonItem*item=new QGraphicsPolygonItem;QPolygonF points;points.append(QPoint(0,-80));points.append(QPoint(-50,0));points.append(QPoint(50,0));item->setPolygon(points);item->setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsFocusable);item->setBrush(QBrush(Qt::darkRed));item->setZValue(ZVaule++);//堆叠的等级,越高越在表面,z的高度item->setData(ITEMID,itemID++);//可以为图形项自定义数据item->setData(ITEMINFO,"三角形");item->setPos(qrand()%50,qrand()%50);//在坐标附近生成图形项scene->addItem(item);scene->clearSelection();//清空选择的item->setSelected(true);//添加的设置选中
}

运行结果:
在这里插入图片描述

5.梯形

void MainWindow::on_actionTixing_triggered()
{QGraphicsPolygonItem*item=new QGraphicsPolygonItem;QPolygonF points;points.append(QPoint(-50,-50));points.append(QPoint(-100,100));points.append(QPoint(100,100));points.append(QPoint(50,-50));item->setPolygon(points);item->setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsFocusable);item->setBrush(QBrush(Qt::darkGreen));item->setZValue(ZVaule++);//堆叠的等级,越高越在表面,z的高度item->setData(ITEMID,itemID++);//可以为图形项自定义数据item->setData(ITEMINFO,"梯形");item->setPos(qrand()%50,qrand()%50);//在坐标附近生成图形项scene->addItem(item);scene->clearSelection();//清空选择的item->setSelected(true);//添加的设置选中
}

运行结果:
在这里插入图片描述

6.直线

void MainWindow::on_actionLine_triggered()
{QGraphicsLineItem*item=new QGraphicsLineItem(-100,-100,100,100);item->setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsFocusable);QPen pen;pen.setWidth(4);pen.setColor(Qt::red);item->setPen(pen);item->setZValue(ZVaule++);//堆叠的等级,越高越在表面,z的高度item->setData(ITEMID,itemID++);//可以为图形项自定义数据item->setData(ITEMINFO,"直线");item->setPos(qrand()%50,qrand()%50);//在坐标附近生成图形项scene->addItem(item);scene->clearSelection();//清空选择的item->setSelected(true);//添加的设置选中
}

运行结果:
在这里插入图片描述

7.文本

void MainWindow::on_actionText_triggered()
{QString str=QInputDialog::getText(this,"输入文本","请输入文本:");QGraphicsTextItem*item=new QGraphicsTextItem(str);item->setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsFocusable);QFont font;font.setBold(true);font.setPixelSize(30);item->setFont(font);item->setDefaultTextColor(Qt::red);//设置默认文本颜色item->setZValue(ZVaule++);//堆叠的等级,越高越在表面,z的高度item->setData(ITEMID,itemID++);//可以为图形项自定义数据item->setData(ITEMINFO,"文本");item->setPos(qrand()%50,qrand()%50);//在坐标附近生成图形项scene->addItem(item);scene->clearSelection();//清空选择的item->setSelected(true);//添加的设置选中
}

运行结果:
在这里插入图片描述

六.总结

在这里插入图片描述

因时间有限,我们先完成一半!
图形项的添加基本一致.

  • 先创建一个图形项
  • 设置标识,可以移动
  • 设置画刷或者画笔
  • 设置堆叠等级
  • 设置数据
  • 随机设置位置
  • 创建添加图形项
  • 清空原来的选择
  • 设置现在添加的选择

一生摘叶,不知寻根!

http://www.yayakq.cn/news/682393/

相关文章:

  • 做网站好还是阿里巴巴网站申请微信登录
  • 电子商务网站建设组织流程图线上购物平台
  • 南宁企业网站排名优化营销型网站建设题
  • 天水 网站建设手机网页自动跳转怎么处理
  • 汤唯梁朝伟做的视频网站合肥百度关键词排名
  • 手机网站设计开发服务我要表白网站在线制作
  • 手机网站开发c 教程腾讯云cdn wordpress
  • 品网站建设公司排名管理咨询公司发展规划
  • 免费私人网站建设平台自字网站建设教程视频
  • 网站开发与设计教程怎么做网站注册的网页
  • 企业域名如何申请宁波seo外包服务
  • 3d网站带后台下载网页截图快捷键
  • 洛阳住房与城乡建设厅网站东莞商城网站建设哪家便宜
  • 网站做新闻外链有作用吗安徽省和住房建设厅网站
  • 毕业设计网站设计步骤律师网络推广哪个比较好
  • 电子商务网站建设运营网站建设可自学吗
  • 广州网站设计公司哪里济南兴田德润怎么联系重庆seo整站优化系统
  • 自己的网站 做采集怎么做高端html5网站设计工作室织梦模板 dedecms5.7
  • 精品网站建设多少钱网站制作基础教程
  • 泰安网站建设运营费用东营远见网站建设公司
  • wordpress看文网站免费的招标网站有哪些
  • 找人做设计的网站三水网站设计
  • 江苏城乡与住房建设厅网站郴州网站小程序
  • 网站建设理论知识php怎么做视频网站
  • 基层建设网站是不是停办了自己怎么做logo
  • 北京社招网站广州企业公司大全
  • 新泰网络推广公司东莞网站制作实力乐云seo
  • 如何做网络营销推广55宁波做网站优化多少钱
  • 网站开发范本做超市促销海报哪个网站好
  • 公司网站备案号社区建设网站