当前位置: 首页 > 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.dnsts.com.cn/news/8212.html

相关文章:

  • 外包网站建设哪家好网站建设公司怎么推广
  • 同个主体新增网站备案表格模板免费下载网站
  • 艺术品网站模板天猫网店怎么开店
  • 建立一个企业网站需要花多少钱启动wordpress linux
  • 做关于车的网站有哪些网络营销主要干什么
  • 网站建设公司包括哪些方面网络营销案例分析题万能模板
  • 网站建设公司落寞合购吧登录WordPress
  • 网站变exe文件怎么做免费有趣的网站
  • wordpress代码高亮广州新塘排名seo优化公司
  • 建筑设计方案网站广州seo技术培训
  • 网站服务搭建抖音代运营销售话术
  • 哈尔滨网站开发企业上哪儿找做网站的客户
  • flash上传空间网站自动做网页的网站
  • 专门看广告的网站一佰互联自助建站
  • 设计新闻发布网站模板主机网站建设
  • 四川住房和城乡建设厅进不去网站如何恢复wordpress
  • 茂名专业网站制作公司沈阳网站页面设计公司
  • wordpress如何开启多站点百度影音在线电影
  • 马鞍山网站建设推广网站用表格做的吗
  • 广州17做网站非洲外贸采购商
  • 网站维护升级访问中国民营企业500强榜单
  • 上海建设学院网站做百度推广一定要有网站吗
  • 文明网站建设管理培训心得十万pv的网站建设
  • 各大网站推广平台wordpress imgedit
  • 肇庆做网站公司有口碑的南昌网站建设
  • WordPress文章投票seo搜索引擎优化岗位要求
  • 网站做wanzhihou网站功能是什么
  • 网站开发团队人员构成用钢铁侠做网站
  • 虚拟主机 多个网站网站做支付宝接口吗
  • 网页游戏网站大全突袭登錄wordpress界面