- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我实际上正在实现一个类,该类允许用户在按下鼠标时绘制任意数量的矩形。
这是处理这种情况的 QGraphicsScene
的代码:
void ImageGraphicsSceneW::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
origPoint=event->scenePos();
qDebug()<<"origPoint="<<origPoint;
mousePressed=true;
QGraphicsScene::mousePressEvent(event);
}
void ImageGraphicsSceneW::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if(mousePressed==true){
if(!rectangle){
rectangle=new QGraphicsRectItem;
this->addItem(rectangle);
rectangle->setPen(QPen(Qt::red,4,Qt::SolidLine));
rectangle->setPos(origPoint);
}
qDebug()<<"event.scenePos.x:"<<event->scenePos();
rectangle->setRect(0,0,(event->scenePos().x()-origPoint.x()),
(event->scenePos().y()-origPoint.y()));
}
else
QGraphicsScene::mouseMoveEvent(event);
}
void ImageGraphicsSceneW::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
rectangle=NULL;
//buffer_rectangle(0,0,0,0);
mousePressed=false;
QGraphicsScene::mouseReleaseEvent(event);
}
但是,当我实际想要绘制具有负宽度和高度的矩形时,我遇到了一些问题。我的意思是当 origPoint.x()
和 origPoint.y()
的值严格高于 scenePos().x()
并且scenePos().y()
分别。
您知道我该如何处理这个问题吗?我必须使用 QTransform
类吗?
最佳答案
如果 event->scenePos()
的 x
或 y
变得低于原点,调整原点到最上面和最左边的点,取正宽度值:
void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if(mousePressed==true){
if(!rectangle){
rectangle=new QGraphicsRectItem;
this->addItem(rectangle);
rectangle->setPen(QPen(Qt::red,4,Qt::SolidLine));
rectangle->setPos(origPoint);
}
float top = qMin(origPoint.y(), event->scenePos().y());
float left = qMin(origPoint.x(), event->scenePos().x());
rectangle->setPos(left, top);
rectangle->setRect(0, 0, qAbs(event->scenePos().x() - origPoint.x()),
qAbs(event->scenePos().y() - origPoint.y()));
qDebug() << top << left << origPoint << event->scenePos();
}
else
QGraphicsScene::mouseMoveEvent(event);
}
关于c++ - 用负值绘制 QGraphicsRectItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33342176/
我正在从 QGraphicsRectItem 创建对象并添加到 Qgraphicscene(scene)。我想获取对象 (qgraphicsrectitem) 的每个 movement(pos),以便
我实际上正在实现一个类,该类允许用户在按下鼠标时绘制任意数量的矩形。 这是处理这种情况的 QGraphicsScene 的代码: void ImageGraphicsSceneW::mousePres
我一辈子都弄不明白这个问题,但我已将其归结为一个自给自足的问题。 我想做的是围绕在 QGraphicsScene 中选择的项目绘制一个 QGraphicsRectItem。绘制矩形后,可以以将所有项目
我在 qgraphicsScene 上绘制了一个 qgraphicsRectItem。对于鼠标事件,它会在场景上移动、调整大小和重新定位,即选择项目、mousePress 和 mouseMove。我怎
我一直在尝试找到一种方法来用任何颜色填充 QGraphicsRectItem 的实例,比如说红色,但是我没有找到一个明确的方法来完成这个天真的任务,如果你能的话那就太好了提供一些提示、链接等。 非常感
我试图在将 QGraphicsRectItem 添加到场景后移动它。它会移动,但与鼠标指针有一定的偏移量。我认为它只是将鼠标指针位置添加到其原始位置。我不知道如何解决这个问题。 这是我的代码: cla
我试图在用户移动 QGraphicsRectItem 时获取它的子类的 boundingRect() 。但是,随着矩形在场景中移动,boundingRect() 返回的矩形始终返回边界矩形的原始值。下
我想要一个在线监控系统,可以判断形状当前的位置,但是我得到了非常奇怪的项目坐标,而且每次我创建新的并拖动它时它的尺寸都会增加 1。 初始位置( map 大小为 751 x 751,通过输出到 qDeb
我正在逐步完成一个使用 Qt 和 C++ 的初学者(非基于类的)项目。该项目的主要目标是学习设计模式。但是在我开始学习如何使用和实现不同的设计模式以改进代码之前,我必须先有一个没有任何设计模式的工作实
我正在尝试创建一个可调整大小的 QGraphicsRectItem,并可以选择不同的绘制样式。 如果我创建一个仅具有调整大小功能的简单矩形,那么它会按预期工作: class Rectangle(QtW
我有 QGraphicsView、QGraphicsScene 和 QGraphicsRectItem。QGraphicsScene 中的 QGraphicsRectItem 和 QGraphicsV
我编写了这段代码来将 bullet 旋转到 enemy: void Bullet::turnToFutureLocation(Enemy *enemy) { QLineF ln(mapToSc
我正在创建排序算法的可视化。我有一个 QGraphicsRectItems vector ,它们是在应用程序启动时生成的具有不同高度和相同宽度的列。它们被打乱,然后添加到 QGraphicsScene
如何在 Qt 中的 qgraphicsrectitem 中制作自动收报机我试着跟随 rect = new QGraphicsRectItem; text = new QGraphicsText
如果我越过像 QGraphicsRectItem 这样的矩形,我想更改光标。 我有一个继承自 QGraphicsView 的类,矩形显示在 QGraphicScene 中。 我使用 eventFilt
我想做的是: 我有一个带 QGraphicsView 的小 GUI。在此图形 View 中,我加载了一张图片: // m_picture is QPixmap // image is QImage /
我第一次尝试 PyQT,目的是最终创建一些数据的非常基本的图形表示。 我目前正在尝试将两个 QGraphicsTextItem 装在 QGraphicsRectItem 中,我对看到的结果有一些疑问。
我是一名优秀的程序员,十分优秀!