Add two speedsize for displacing items when working with a keyboard on

diagram editor :
normal displacement "adjustable from 1 to 30" 
(keys : Left,Right,Up,Down) 
fine displacement "adjustable from 1 to 10"
(ALT + keys : Left,Right,Up,Down ), thanks Erik for his patch


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5749 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
scorpio810
2019-02-24 15:44:47 +00:00
parent 89d2b4f7b0
commit ba293a650e
4 changed files with 198 additions and 26 deletions

View File

@@ -42,6 +42,8 @@ int Diagram::xGrid = 10;
int Diagram::yGrid = 10;
int Diagram::xKeyGrid = 10;
int Diagram::yKeyGrid = 10;
int Diagram::xKeyGridFine = 1;
int Diagram::yKeyGridFine = 1;
const qreal Diagram::margin = 5.0;
// static variable to keep track of present background color of the diagram.
@@ -285,7 +287,8 @@ void Diagram::keyPressEvent(QKeyEvent *event)
QSettings settings;
int xKeyGrid = settings.value("DiagramEditor_xKeyGrid_sb", Diagram::xKeyGrid).toInt();
int yKeyGrid = settings.value("DiagramEditor_yKeyGrid_sb", Diagram::yKeyGrid).toInt();
int xKeyGridFine = settings.value("DiagramEditor_xKeyGridFine_sb", Diagram::xKeyGridFine).toInt();
int yKeyGridFine = settings.value("DiagramEditor_yKeyGridFine_sb", Diagram::yKeyGridFine).toInt();
event->setAccepted(false);
if (m_event_interface) {
@@ -342,7 +345,46 @@ void Diagram::keyPressEvent(QKeyEvent *event)
return;
}
}
else if(event->modifiers() == Qt::ControlModifier)
else if(event->modifiers() == Qt::AltModifier)
{
switch(event->key())
{
case Qt::Key_Left:
for (Element *item : dc.m_elements)
{
left_position = item->sceneBoundingRect().x();
if(left_position <= 5)
return;
}
movement = QPointF(-xKeyGridFine, 0.0);
break;
case Qt::Key_Right:
movement = QPointF(+xKeyGridFine, 0.0);
break;
case Qt::Key_Up:
for(Element *item : dc.m_elements)
{
top_position = item->sceneBoundingRect().y();
if(top_position <= 5)
return;
}
movement = QPointF(0.0, -yKeyGridFine);
break;
case Qt::Key_Down:
movement = QPointF(0.0, +yKeyGridFine);
break;
}
if (!movement.isNull() && !focusItem())
{
m_elements_mover.beginMovement(this);
m_elements_mover.continueMovement(movement);
event->accept();
return;
}
}
else if(event->modifiers() == Qt::ControlModifier)
{
//Adjust the alignment of a texts group
if(selectedItems().size() == 1 && selectedItems().first()->type() == QGraphicsItemGroup::Type)