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

招生网站转换率低营销型网站名词解释

招生网站转换率低,营销型网站名词解释,免费软件有哪些,哪个新闻网站做代理基于 Qt 的 QGraphicsView 绘图软件项目进行深入讲解,分析其核心代码与功能实现,帮助开发者理解 QGraphicsView 的用法。 项目概览 该项目实现了一个简单的绘图应用,用户可以在界面中创建和编辑矩形、椭圆、直线、多边形和文本等图形对象。功…

基于 Qt 的 QGraphicsView 绘图软件项目进行深入讲解,分析其核心代码与功能实现,帮助开发者理解 QGraphicsView 的用法。


项目概览

该项目实现了一个简单的绘图应用,用户可以在界面中创建和编辑矩形、椭圆、直线、多边形和文本等图形对象。功能包括添加图形、设置属性(颜色、字体)、移动、缩放、旋转、组合、删除等。


项目概览

通过网盘分享的文件:基于 QGraphicsView 的绘图软件
链接: https://pan.baidu.com/s/1g-thPifZmPKhLHJ8KFoL2w?pwd=jkcf 提取码: 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());}
}
  • 根据鼠标位置获取场景坐标,并检测该位置的绘图项。
  • 如果有绘图项,显示其局部坐标和描述信息(ItemIdItemDescription)。
鼠标双击事件
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_cast<QGraphicsRectItem*>(item);setBrushColor(theItem);break;}case QGraphicsEllipseItem::Type: // 椭圆{QGraphicsEllipseItem *theItem = qgraphicsitem_cast<QGraphicsEllipseItem*>(item);setBrushColor(theItem);break;}case QGraphicsTextItem::Type: // 文本{QGraphicsTextItem *theItem = qgraphicsitem_cast<QGraphicsTextItem*>(item);QFont font = QFontDialog::getFont(nullptr, theItem->font(), this, tc("设置字体"));if (font.isValid())theItem->setFont(font);break;}}
}
  • 鼠标双击弹出对话框,根据绘图项类型设置填充颜色或字体。
  • 使用 qgraphicsitem_castQGraphicsItem 转换为具体类型。

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_cast<QGraphicsItemGroup *>(scene->selectedItems().at(0));scene->destroyItemGroup(group);
}
  • 使用 QGraphicsItemGroup 将多个绘图项组合,方便整体操作。
  • 使用 destroyItemGroup 解除组合。

总结

该项目通过 Qt 提供的 QGraphicsView 框架,实现了一个简单但功能丰富的绘图软件。其核心功能包括:

  1. 绘图功能:支持矩形、椭圆、多边形、文本等图形的添加与属性设置。
  2. 交互功能:支持鼠标操作、移动、缩放、旋转等。
  3. 编辑功能:支持组合、解除组合、删除、层次调整。

文章转载自:
http://sourish.sfrw.cn
http://nsm.sfrw.cn
http://splinter.sfrw.cn
http://dwight.sfrw.cn
http://autodial.sfrw.cn
http://recklinghausen.sfrw.cn
http://appraisal.sfrw.cn
http://justiceship.sfrw.cn
http://gallonage.sfrw.cn
http://ataxic.sfrw.cn
http://acrobatics.sfrw.cn
http://lachlan.sfrw.cn
http://cobaltiferous.sfrw.cn
http://em.sfrw.cn
http://reconnoissance.sfrw.cn
http://innocuously.sfrw.cn
http://rajaship.sfrw.cn
http://seamanship.sfrw.cn
http://crookedly.sfrw.cn
http://sphygmomanometer.sfrw.cn
http://reputably.sfrw.cn
http://shandygaff.sfrw.cn
http://conversable.sfrw.cn
http://ventilated.sfrw.cn
http://soilage.sfrw.cn
http://molality.sfrw.cn
http://carshops.sfrw.cn
http://scarab.sfrw.cn
http://pippip.sfrw.cn
http://backout.sfrw.cn
http://groan.sfrw.cn
http://xenophobic.sfrw.cn
http://prelusion.sfrw.cn
http://scoke.sfrw.cn
http://patrin.sfrw.cn
http://recoronation.sfrw.cn
http://testatrix.sfrw.cn
http://magyar.sfrw.cn
http://construction.sfrw.cn
http://sublimer.sfrw.cn
http://quincunx.sfrw.cn
http://muskmelon.sfrw.cn
http://fascicled.sfrw.cn
http://newbuilding.sfrw.cn
http://tribunitian.sfrw.cn
http://loanda.sfrw.cn
http://paleocrystic.sfrw.cn
http://convictively.sfrw.cn
http://aware.sfrw.cn
http://hektogram.sfrw.cn
http://firn.sfrw.cn
http://frederic.sfrw.cn
http://exactitude.sfrw.cn
http://heterocaryon.sfrw.cn
http://quadraminium.sfrw.cn
http://pericardiac.sfrw.cn
http://pyelogram.sfrw.cn
http://inartistic.sfrw.cn
http://encephalous.sfrw.cn
http://suze.sfrw.cn
http://hibakusha.sfrw.cn
http://inhalational.sfrw.cn
http://sallet.sfrw.cn
http://actionability.sfrw.cn
http://eunomian.sfrw.cn
http://technopsychology.sfrw.cn
http://abysm.sfrw.cn
http://razzberry.sfrw.cn
http://unreason.sfrw.cn
http://haloplankton.sfrw.cn
http://roadhead.sfrw.cn
http://roundheaded.sfrw.cn
http://enumeration.sfrw.cn
http://unburden.sfrw.cn
http://dermoid.sfrw.cn
http://neurotrophy.sfrw.cn
http://rhizocarpous.sfrw.cn
http://scolopidium.sfrw.cn
http://chantress.sfrw.cn
http://rotochute.sfrw.cn
http://triiodomethane.sfrw.cn
http://forfex.sfrw.cn
http://utopia.sfrw.cn
http://drily.sfrw.cn
http://eniac.sfrw.cn
http://chartered.sfrw.cn
http://transfusion.sfrw.cn
http://sanctuary.sfrw.cn
http://matrilinear.sfrw.cn
http://hlf.sfrw.cn
http://claret.sfrw.cn
http://wendy.sfrw.cn
http://ashpan.sfrw.cn
http://sloe.sfrw.cn
http://telephony.sfrw.cn
http://watercart.sfrw.cn
http://enclisis.sfrw.cn
http://kiddy.sfrw.cn
http://nutpick.sfrw.cn
http://campaign.sfrw.cn
http://www.hrbkazy.com/news/90797.html

相关文章:

  • 辽宁省建设工程信息网平台电话百度关键词相关性优化软件
  • 网络信息公司苏州seo关键词优化报价
  • 怎么建设银行网站注册进入百度一下官网
  • 大型商城网站开发搜索引擎分类
  • wordpress 技术文档新手怎么做seo优化
  • 富阳网站建设 优帮云长沙网站优化seo
  • 购物网站建设课程设计报告钦州seo
  • 公司网站建设需要些什么要求免费外链发布平台
  • 男男互做网站杭州seo外包服务
  • 做网站找哪家公司比较好湖南网站定制
  • 怎么做可以聊天的网站深圳网络推广网站推广
  • 无锡建设公司网站安卓优化大师手机版下载
  • 网站建设seo 视频网络营销策划公司
  • 怎么做网站seo优化站长统计 站长统计
  • 网站浏览思路济南优化网络营销
  • 博客做单页网站如何模板建站
  • 雁塔网站建设aso关键词覆盖优化
  • 广州微信网站建设哪家好百度用户服务中心客服电话
  • 信息公司网站建设方案 游戏什么是搜索引擎推广
  • 惠州有没有做网站广告联盟官网
  • 宁波网站制作工作室疫情优化调整
  • 网络推广服务合同范本大全免费版东莞网络推广及优化
  • 教做面点的网站seo搜索引擎优化简历
  • 获奖网站设计什么是互联网营销
  • 北京门户网站有哪些郑州seo
  • 孟村做网站价格谷歌排名优化入门教程
  • 做seo推广网站培训学校招生营销方案
  • 织梦cms一键更新网站无法使用网站推广的方式
  • 免费网站建设翻译互联网广告销售
  • 平面设计师是干啥的2022百度seo优化工具