您的位置:首页 > 健康 > 美食 > 基于web的美食网页设计_seo经典案例_广告留电话号的网站_完整html网页代码案例

基于web的美食网页设计_seo经典案例_广告留电话号的网站_完整html网页代码案例

2024/12/26 20:05:16 来源:https://blog.csdn.net/fengyu09/article/details/144273542  浏览:    关键词:基于web的美食网页设计_seo经典案例_广告留电话号的网站_完整html网页代码案例
基于web的美食网页设计_seo经典案例_广告留电话号的网站_完整html网页代码案例

ui文件拖放QGraphicsView,src文件定义QGraphicsScene赋值给图形视图。

	this->scene = new QGraphicsScene();ui.graph->setScene(this->scene);

在这里插入图片描述
对graphicview过滤事件,只能在其viewport之后安装,否则不响应。

ui.graph->viewport()->installEventFilter(this);

分别对鼠标事件响应。

//事件过滤器
bool CarPos::eventFilter(QObject* obj, QEvent* event)
{//按下鼠标if (event->type() == QEvent::MouseButtonPress) {//显示橡皮筋_origin = pos_global(event);if (!rubberBand)rubberBand = new QRubberBand(QRubberBand::Rectangle, this);rubberBand->setGeometry(QRect(_origin, QSize()));rubberBand->show();}//移动鼠标if (event->type() == QEvent::MouseMove) {		QPoint p = pos_global(event);rubberBand->setGeometry(QRect(_origin, p).normalized());}//释放鼠标if (event->type() == QEvent::MouseButtonRelease) {this->in_drawing = false;}return QMainWindow::eventFilter(obj, event);
}

要得到正确的橡皮筋图形,需要考虑点的坐标系转换。
在这里插入图片描述
在这里插入图片描述

//位置换算
QPoint CarPos::pos_global(QEvent* event)
{QMouseEvent* evt = static_cast<QMouseEvent*>(event);QPoint pt = evt->pos();//QPointF pt_f = ui.graph->mapTo(this, pt);QPointF pt_f = ui.graph->mapToParent(pt);return QPoint((int)pt_f.x(), (int)pt_f.y());
}

mapToParent是以QGraphicsView实例为父母级,会导致坐标向上高出10px(上下俩元素间隙)。应该用mapTo函数,this指向mainwindows。
在这里插入图片描述
弄清item之间的包含关系,能选择好坐标转换from或者to函数。
鼠标坐标点是QGraphicsView实例(ui.graph)的,橡皮筋坐标要正确,需要将坐标mapto到graph的父母级mainwindows,如果要得到graph内的场景scene坐标,则要mapToScene。

QPoint CarPos::pos_scene(QPoint pt)
{QPointF pt_f = ui.graph->mapToScene(pt);return QPoint((int)pt_f.x(), (int)pt_f.y());	
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com