Show x:y pos when drag element in the status bar

This commit is contained in:
joshua
2022-11-04 20:25:49 +01:00
parent 850cc5d0f2
commit 0ae0ce04cd
4 changed files with 55 additions and 7 deletions

View File

@@ -21,6 +21,8 @@
#include "../diagram.h"
#include "../undocommand/addgraphicsobjectcommand.h"
#include "../factory/elementfactory.h"
#include "../qetapp.h"
#include "../qetdiagrameditor.h"
#include "../qetgraphicsitem/element.h"
#include "../qetgraphicsitem/conductor.h"
@@ -49,6 +51,15 @@ DiagramEventAddElement::DiagramEventAddElement(ElementsLocation &location, Diagr
m_element -> setFlag(QGraphicsItem::ItemIsSelectable, false);
m_diagram -> addItem(m_element);
m_running = true;
if (!diagram->views().isEmpty()) {
const auto qde = QETApp::diagramEditorAncestorOf(diagram->views().at(0));
if (qde) {
m_status_bar = qde->statusBar();
}
} else {
m_status_bar.clear();
}
}
}
}
@@ -65,6 +76,11 @@ DiagramEventAddElement::~DiagramEventAddElement()
m_diagram->removeItem(m_element);
m_element->deleteLater();
}
if (m_status_bar) {
m_status_bar->clearMessage();
}
for (auto view : m_diagram->views())
view -> setContextMenuPolicy(Qt::DefaultContextMenu);
}
@@ -77,8 +93,14 @@ DiagramEventAddElement::~DiagramEventAddElement()
*/
void DiagramEventAddElement::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if (m_element) {
m_element->setPos(Diagram::snapToGrid(event->scenePos()));
if (m_element)
{
const auto pos_{Diagram::snapToGrid(event->scenePos())};
m_element->setPos(pos_);
if (m_status_bar) {
m_status_bar->showMessage(QLatin1String("x %1 : y %2").arg(QString::number(pos_.x()), QString::number(pos_.y())));
}
}
event->setAccepted(true);
}

View File

@@ -22,6 +22,7 @@
#include "diagrameventinterface.h"
class Element;
class QStatusBar;
/**
@brief The DiagramEventAddElement class
@@ -51,6 +52,7 @@ class DiagramEventAddElement : public DiagramEventInterface
ElementsLocation m_location;
Element *m_element;
QString m_integrate_path;
QPointer<QStatusBar> m_status_bar;
};
#endif // DIAGRAMEVENTADDELEMENT_H