我正在尝试通过直线(QGraphicsLineItem
)将两个QGraphicsItems
连接起来;当我在第一个对象上使用中间鼠标按钮点击,然后悬停在第二个对象上并释放时,它应该在它们之间绘制一条线。
这是用于连接这些项的函数。
void GraphicsBlock::connectBlocks(GraphicsBlock *block)
{
GraphicsConnect *connection = new GraphicsConnect(); //Class with QGraphicsLineItem
connection->line->setLine(QLineF(this->pos(), block->pos()));
}
我正在处理一个场景,但是在通过鼠标位置查找第二个块时遇到了问题。以下代码应该与mousePressEvent
函数一起使用:
if(event->button() == Qt::MiddleButton)
Connecting == true;
之后是 mouseReleaseEvent
if(Connecting)
{
//Get object by mouse position here
//this.connectBlocks(..)
Connecting = false;
}
我尝试了
scene->itemsAt(mouse.x(), mouse.y(), QTransform())
和 scene->items(QPointF(mouse.x(),mouse.y())
,但它们总是返回空列表。编辑: 应用程序应该按照以下方式工作:蓝色椭圆形是被点击的端口,现在我应该拖动(仍然按住鼠标)到另一个端口并释放鼠标。
QGraphicsItem
派生类中?请展示实现细节。我还假设您拥有自己的类,该类继承自QGraphicsView
。这是正确的吗?这是您处理鼠标事件的地方吗? - Dusteh