Я пытаюсь соединить две QGraphicsItems
по прямой линии (QGraphicsLineItem
); щелкнув средней кнопкой мыши по первому объекту, затем наведите курсор мыши на второй объект и после того, как я отпущу его, он должен провести линию между ними.
Эта функция должна соединять эти элементы.
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())
но он всегда возвращает пустой список .
EDIT:
Вот как должно работать приложение, синий эллипс - это нажатие на порт, теперь я должен перетащить (все еще мышь вниз) на другой порт и отпустить мышь.