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

微信手机网站搭建做营销网站

微信手机网站搭建,做营销网站,网站建设落后发言,深圳广告标识设计公司基于 Qt 的 QGraphicsView 绘图软件项目进行深入讲解#xff0c;分析其核心代码与功能实现#xff0c;帮助开发者理解 QGraphicsView 的用法。 项目概览 该项目实现了一个简单的绘图应用#xff0c;用户可以在界面中创建和编辑矩形、椭圆、直线、多边形和文本等图形对象。功…基于 Qt 的 QGraphicsView 绘图软件项目进行深入讲解分析其核心代码与功能实现帮助开发者理解 QGraphicsView 的用法。 项目概览 该项目实现了一个简单的绘图应用用户可以在界面中创建和编辑矩形、椭圆、直线、多边形和文本等图形对象。功能包括添加图形、设置属性颜色、字体、移动、缩放、旋转、组合、删除等。 项目概览 通过网盘分享的文件基于 QGraphicsView 的绘图软件 链接: https://pan.baidu.com/s/1g-thPifZmPKhLHJ8KFoL2w?pwdjkcf 提取码: jkcf核心代码讲解 1. 初始化与场景设置 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 创建 QGraphicsScene并设置范围scene new QGraphicsScene(-300, -200, 600, 400);// 将场景绑定到视图ui-View-setScene(scene);// 设置鼠标样式和拖拽模式ui-View-setCursor(Qt::CrossCursor);ui-View-setMouseTracking(true);ui-View-setDragMode(QGraphicsView::RubberBandDrag);// 初始化状态栏信息labViewCord new QLabel(tc(View 坐标));labSceneCord new QLabel(tc(Scene 坐标));labItemCord new QLabel(tc(Item 坐标));labItemInfo new QLabel(tc(ItemInfo: ));ui-statusBar-addWidget(labViewCord);ui-statusBar-addWidget(labSceneCord);ui-statusBar-addWidget(labItemCord);ui-statusBar-addWidget(labItemInfo); }QGraphicsScene定义绘图区域设置范围为 (-300, -200) 到 (300, 200)。QGraphicsView作为窗口的显示组件绑定场景 scene支持鼠标拖拽和实时追踪。状态栏显示鼠标坐标、选中项的信息便于交互。 2. 鼠标事件处理 鼠标移动事件 void MainWindow::on_mouseMovePoint(QPoint point) {labViewCord-setText(tc(View 坐标%1,%2).arg(point.x()).arg(point.y()));QPointF pointScene ui-View-mapToScene(point);labSceneCord-setText(tc(Scene 坐标%1,%2).arg(pointScene.x()).arg(pointScene.y())); }获取鼠标的视图坐标并将其转换为场景坐标通过状态栏实时显示。 鼠标单击事件 void MainWindow::on_mouseClicked(QPoint point) {QPointF pointScene ui-View-mapToScene(point);QGraphicsItem *item scene-itemAt(pointScene, ui-View-transform());if (item ! nullptr){QPointF pointItem item-mapFromScene(pointScene);labItemCord-setText(tc(Item 坐标%1,%2).arg(pointItem.x()).arg(pointItem.y()));labItemInfo-setText(item-data(ItemDesciption).toString() tc(, ItemId) item-data(ItemId).toString());} }根据鼠标位置获取场景坐标并检测该位置的绘图项。如果有绘图项显示其局部坐标和描述信息ItemId 和 ItemDescription。 鼠标双击事件 void MainWindow::on_mouseDoubleClick(QPoint point) {QPointF pointScene ui-View-mapToScene(point);QGraphicsItem *item scene-itemAt(pointScene, ui-View-transform());if (item nullptr) return;switch (item-type()){case QGraphicsRectItem::Type: // 矩形{QGraphicsRectItem *theItem qgraphicsitem_castQGraphicsRectItem*(item);setBrushColor(theItem);break;}case QGraphicsEllipseItem::Type: // 椭圆{QGraphicsEllipseItem *theItem qgraphicsitem_castQGraphicsEllipseItem*(item);setBrushColor(theItem);break;}case QGraphicsTextItem::Type: // 文本{QGraphicsTextItem *theItem qgraphicsitem_castQGraphicsTextItem*(item);QFont font QFontDialog::getFont(nullptr, theItem-font(), this, tc(设置字体));if (font.isValid())theItem-setFont(font);break;}} }鼠标双击弹出对话框根据绘图项类型设置填充颜色或字体。使用 qgraphicsitem_cast 将 QGraphicsItem 转换为具体类型。 3. 添加绘图项 添加矩形 void MainWindow::on_actItem_Rect_triggered() {QGraphicsRectItem *item new QGraphicsRectItem(-50, -25, 100, 50);item-setFlags(QGraphicsItem::ItemIsMovable |QGraphicsItem::ItemIsSelectable |QGraphicsItem::ItemIsFocusable);item-setBrush(QBrush(Qt::yellow));item-setZValue(frontZ);scene-addItem(item); }使用 QGraphicsRectItem 创建矩形。设置属性 可移动、可选中、可聚焦。填充颜色为黄色Z 值递增调整叠放顺序。 添加文本 void MainWindow::on_actItem_Text_triggered() {QString str QInputDialog::getText(this, tc(输入文字), tc(请输入文字));if (str.isEmpty()) return;QGraphicsTextItem *item new QGraphicsTextItem(str);QFont font this-font();font.setPointSize(20);font.setBold(true);item-setFont(font);scene-addItem(item); }使用 QGraphicsTextItem 创建文本用户通过对话框输入文字。设置字体大小为 20并加粗。 4. 操作绘图项 删除选中项 void MainWindow::on_actEdit_Delete_triggered() {int cnt scene-selectedItems().count();for (int i 0; i cnt; i){QGraphicsItem *item scene-selectedItems().at(0);scene-removeItem(item);} }遍历选中项列表逐个从场景中删除。 缩放与旋转 void MainWindow::on_actZoomIn_triggered() {ui-View-scale(1.1, 1.1); // 放大视图 }void MainWindow::on_actRotateLeft_triggered() {ui-View-rotate(-30); // 逆时针旋转视图 }放大视图的比例scale。顺时针/逆时针旋转视图rotate。 组合与解除组合 void MainWindow::on_actGroup_triggered() {QGraphicsItemGroup *group new QGraphicsItemGroup;scene-addItem(group);foreach (QGraphicsItem *item, scene-selectedItems()){group-addToGroup(item);} }void MainWindow::on_actGroupBreak_triggered() {QGraphicsItemGroup *group qgraphicsitem_castQGraphicsItemGroup *(scene-selectedItems().at(0));scene-destroyItemGroup(group); }使用 QGraphicsItemGroup 将多个绘图项组合方便整体操作。使用 destroyItemGroup 解除组合。 总结 该项目通过 Qt 提供的 QGraphicsView 框架实现了一个简单但功能丰富的绘图软件。其核心功能包括 绘图功能支持矩形、椭圆、多边形、文本等图形的添加与属性设置。交互功能支持鼠标操作、移动、缩放、旋转等。编辑功能支持组合、解除组合、删除、层次调整。
http://www.laogonggong.com/news/125435.html

相关文章:

  • 重点项目建设网站域名有wordpress
  • 山东省建设工程电子信息网站网页设计作品赏析
  • 网站建设与制作公司论坛网站建设规划书
  • 更改网站文章上传时间安卓开发用什么开发工具
  • 哪里有营销型网站最新报价苏州网站建设培训
  • 网站后台数据库丢失花儿直播免费视频观看
  • 建设企业网站报价各种网址大全
  • 个人网站上线流程绍兴住房和城乡建设厅网站
  • 网站开发文档撰写深圳网站建设合同
  • 网站建设站长之家什么网站可以做单词书
  • 南京网站设计公司哪儿济南兴田德润怎么联系教育网站建设备案
  • 2021不良正能量免费网站wordpress ins插件
  • 丹东站上海建设工程信息网查询
  • 网站建设采购项目wordpress4.2.2下载
  • 政务网站建设云计算中心wordpress 文章字段
  • 双语版网站引导页西安哪里可以做公司网站
  • 做网站打算套用模板青岛网站推广引流
  • 做动漫的网站项目网络图最早开始时间
  • 建设网站明细报价表c2c代表网站
  • 深圳住房建设厅网站首页网站科技感页面设计
  • 电子化业务管理与网站建设长沙城乡住房建设厅网站
  • 河南省招生网站服务平台wordpress精仿赶集
  • 班级优化大师电脑版佛山优化推广
  • 深圳网站建设专业乐云seo网站域名区别吗
  • 如何申请网站空间和域名wordpress建立频道
  • seo网站优化网站编辑招聘阿里云 建设网站
  • 建网站要钱吗外贸业务怎么利用网站开发客户
  • 呼市浩特网站建设外包公司中国建设劳动学会监制网站
  • 教做美食的视频网站网站开发设计框图
  • 公司内部网站怎么建设昆明网络营销服务公司