aenderung der ueberlappung der felder sollte funktionieren
git-svn-id: http://svn.lsim.tuxzone.org/trunk@18 4bec179b-ab65-46ed-a5f8-55b8b5c735d0
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
#include "simulscene.h"
|
||||
#include <QGraphicsSceneWheelEvent>
|
||||
#include <QDebug>
|
||||
#include <QMenu>;
|
||||
#include <QMenu>
|
||||
|
||||
FieldItem::FieldItem()
|
||||
: QGraphicsItem() {
|
||||
|
||||
@@ -63,6 +63,7 @@ void HomoBFieldWidget::createWidget() {
|
||||
QDoubleSpinBox *posYBox = new QDoubleSpinBox;
|
||||
posYBox->setRange(-5000, 5000);
|
||||
posYBox->setKeyboardTracking(false);
|
||||
posYBox->setStatusTip("Position des Feldes in y-Richtung");
|
||||
connect(homoBField ,SIGNAL(ScenePosYChanged(double)),posYBox, SLOT(setValue(double)) );
|
||||
connect(posYBox, SIGNAL(valueChanged(double)),homoBField ,SLOT(setScenePosY(double)) );
|
||||
|
||||
@@ -83,8 +84,9 @@ void HomoBFieldWidget::createWidget() {
|
||||
QGroupBox* geometryBox = new QGroupBox(tr("Geometrie"));
|
||||
geometryBox->setLayout(geomGridLayout);
|
||||
|
||||
|
||||
QString fieldFluxDensityString = tr("Die Manetische Flussdichte B in Tesla");
|
||||
QLabel* fieldFluxDensityLabel = new QLabel(tr("Flussdichte(B):"));
|
||||
fieldFluxDensityLabel->setStatusTip(fieldFluxDensityString);
|
||||
|
||||
ExpDoubleSpinBox* fieldFluxDensityBox = new ExpDoubleSpinBox;
|
||||
fieldFluxDensityBox->setRange(0,1e+200);
|
||||
@@ -92,6 +94,7 @@ void HomoBFieldWidget::createWidget() {
|
||||
fieldFluxDensityBox->setDisplayDecimals(3);
|
||||
fieldFluxDensityBox->setKeyboardTracking(false);
|
||||
fieldFluxDensityBox->setSuffix(" T");
|
||||
fieldFluxDensityBox->setStatusTip(fieldFluxDensityString);
|
||||
connect(homoBField ,SIGNAL(fluxDensityChanged(double)),fieldFluxDensityBox, SLOT(setValue(double)) );
|
||||
connect(fieldFluxDensityBox, SIGNAL(valueChanged(double)),homoBField ,SLOT(setFluxDensity(double)) );
|
||||
|
||||
|
||||
12
src/lsim.cpp
12
src/lsim.cpp
@@ -103,6 +103,16 @@ void lsim::createActions() {
|
||||
acts.moveItemUp = new QAction (tr ("rauf"), this);
|
||||
acts.moveItemUp->setStatusTip (tr ("rauf"));
|
||||
connect (acts.moveItemUp, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemUp()));
|
||||
|
||||
acts.moveItemOnTop = new QAction (tr ("ganz rauf"), this);
|
||||
acts.moveItemOnTop->setStatusTip (tr ("ganz rauf"));
|
||||
connect (acts.moveItemOnTop, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemOnTop()));
|
||||
|
||||
acts.moveItemOnBottom = new QAction (tr ("ganz runter"), this);
|
||||
acts.moveItemOnBottom->setStatusTip (tr ("ganz runter"));
|
||||
//acts.moveItemOnBottom->setToolTip( tr ("Nach ganz unten absinken lassen"));
|
||||
connect (acts.moveItemOnBottom, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemOnBottom()));
|
||||
|
||||
//Edit, insert, Modechange
|
||||
|
||||
acts.itemEditModeAct = new QAction (tr ("Edit"), this);
|
||||
@@ -169,8 +179,10 @@ void lsim::createToolBars() {
|
||||
editToolBar->addAction(acts.probeChargeItemPlaceAct);
|
||||
|
||||
upDownToolBar=addToolBar(tr("updown"));
|
||||
upDownToolBar->addAction(acts.moveItemOnBottom);
|
||||
upDownToolBar->addAction(acts.moveItemDown);
|
||||
upDownToolBar->addAction(acts.moveItemUp);
|
||||
upDownToolBar->addAction(acts.moveItemOnTop);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -89,6 +89,8 @@ class lsim: public QMainWindow {
|
||||
|
||||
QAction *moveItemDown;
|
||||
QAction *moveItemUp;
|
||||
QAction *moveItemOnTop;
|
||||
QAction *moveItemOnBottom;
|
||||
|
||||
QAction *itemEditModeAct;
|
||||
QAction *insertEFieldItemAct;
|
||||
|
||||
@@ -120,12 +120,14 @@ void SimulScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) {
|
||||
case HomoEFieldItemInsert:
|
||||
if (mouseEvent->button() != Qt::LeftButton) break; //benutze nur linke maustaste
|
||||
currHomoEfieldInsertItem = new HomoEFieldItem(QRectF(mouseEvent->scenePos(),mouseEvent->scenePos()));
|
||||
currHomoEfieldInsertItem->setZValue(getHighestZIndexFieldItems() + FieldZStep); //zValue setzen
|
||||
addItem(currHomoEfieldInsertItem);
|
||||
QApplication::setOverrideCursor(QCursor(Qt::SizeFDiagCursor));
|
||||
break;
|
||||
case HomoBFieldItemInsert:
|
||||
if (mouseEvent->button() != Qt::LeftButton) break; //benutze nur linke maustaste
|
||||
currHomoBfieldInsertItem = new HomoBFieldItem(QRectF(mouseEvent->scenePos(),mouseEvent->scenePos()));
|
||||
currHomoBfieldInsertItem->setZValue(getHighestZIndexFieldItems()+FieldZStep); //zValue setzen
|
||||
addItem(currHomoBfieldInsertItem);
|
||||
QApplication::setOverrideCursor(QCursor(Qt::SizeFDiagCursor));
|
||||
break;
|
||||
@@ -254,7 +256,6 @@ void SimulScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) {
|
||||
//das neue item auswaehlen
|
||||
clearSelection();
|
||||
currHomoEfieldInsertItem->setSelected(true);
|
||||
currHomoEfieldInsertItem->setZValue(getHighestZIndexFieldItems()+FieldZStep);
|
||||
|
||||
//die resize items aus und einblenden bei rotation
|
||||
connect( currHomoEfieldInsertItem, SIGNAL(rotationChanged()), this, SLOT(displayResizeRects()));
|
||||
@@ -291,7 +292,6 @@ void SimulScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) {
|
||||
//das neue item auswaehlen
|
||||
clearSelection();
|
||||
currHomoBfieldInsertItem->setSelected(true);
|
||||
currHomoBfieldInsertItem->setZValue(getHighestZIndexFieldItems()+FieldZStep);
|
||||
|
||||
//die resize items aus und einblenden bei rotation
|
||||
connect( currHomoBfieldInsertItem, SIGNAL(rotationChanged()), this, SLOT(displayResizeRects()));
|
||||
@@ -806,6 +806,9 @@ QList<QGraphicsItem*> SimulScene::getFieldItemsInZOrder() {
|
||||
}
|
||||
if(!swapNeeded) break;
|
||||
}
|
||||
//for (int i=0;i< currItems.count();++i) {
|
||||
// qDebug()<< "sort: " <<currItems[i]->zValue();
|
||||
//}
|
||||
return currItems;
|
||||
}
|
||||
|
||||
@@ -837,6 +840,50 @@ void SimulScene::moveFieldItemUp(QGraphicsItem* fieldItem) {
|
||||
|
||||
}
|
||||
|
||||
void SimulScene::moveFieldItemOnTop(QGraphicsItem* fieldItem) {
|
||||
if (!FieldItem::isFieldItem(fieldItem)) return;
|
||||
qreal currFieldItemZValue = fieldItem->zValue();
|
||||
QList<QGraphicsItem*> FieldItemsInZOrder = getFieldItemsInZOrder();
|
||||
|
||||
bool fieldItemHit = false;
|
||||
for (int i = 0; i< FieldItemsInZOrder.count()-1;++i) {//currItem rauf wandern lassen
|
||||
if (FieldItemsInZOrder.at(i) == fieldItem) {
|
||||
fieldItemHit = true;
|
||||
}
|
||||
if (fieldItemHit) {
|
||||
QGraphicsItem* swapper = FieldItemsInZOrder.at(i);
|
||||
FieldItemsInZOrder[i] = FieldItemsInZOrder.at(i+1);
|
||||
FieldItemsInZOrder[i+1] = swapper;
|
||||
}
|
||||
}
|
||||
for (int i = 0;i<FieldItemsInZOrder.count();++i) { //z-index fuer neue reihenfolge setzen
|
||||
FieldItemsInZOrder[i]->setZValue( (FieldDefaultZValue + i*FieldZStep));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SimulScene::moveFieldItemOnBottom(QGraphicsItem* fieldItem) {
|
||||
if (!FieldItem::isFieldItem(fieldItem)) return;
|
||||
qreal currFieldItemZValue = fieldItem->zValue();
|
||||
QList<QGraphicsItem*> FieldItemsInZOrder = getFieldItemsInZOrder();
|
||||
|
||||
bool fieldItemHit = false;
|
||||
for (int i = FieldItemsInZOrder.count()-1; i>0 ;--i) { //currItem runter wandern lassen
|
||||
if (FieldItemsInZOrder.at(i) == fieldItem) {
|
||||
fieldItemHit = true;
|
||||
}
|
||||
if (fieldItemHit) {
|
||||
QGraphicsItem* swapper = FieldItemsInZOrder.at(i);
|
||||
FieldItemsInZOrder[i] = FieldItemsInZOrder.at(i-1);
|
||||
FieldItemsInZOrder[i-1] = swapper;
|
||||
}
|
||||
}
|
||||
for (int i = 0;i<FieldItemsInZOrder.count();++i) { //z-index fuer neue reihenfolge setzen
|
||||
FieldItemsInZOrder[i]->setZValue( (FieldDefaultZValue + i*FieldZStep));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SimulScene::moveSelectedFieldItemDown() {
|
||||
if (selectedItems().isEmpty()) return;
|
||||
moveFieldItemDown(selectedItems().first());
|
||||
@@ -844,4 +891,12 @@ void SimulScene::moveSelectedFieldItemDown() {
|
||||
void SimulScene::moveSelectedFieldItemUp() {
|
||||
if (selectedItems().isEmpty()) return;
|
||||
moveFieldItemUp(selectedItems().first());
|
||||
}
|
||||
void SimulScene::moveSelectedFieldItemOnTop() {
|
||||
if (selectedItems().isEmpty()) return;
|
||||
moveFieldItemOnTop(selectedItems().first());
|
||||
}
|
||||
void SimulScene::moveSelectedFieldItemOnBottom() {
|
||||
if (selectedItems().isEmpty()) return;
|
||||
moveFieldItemOnBottom(selectedItems().first());
|
||||
}
|
||||
@@ -92,6 +92,10 @@ class SimulScene : public QGraphicsScene {
|
||||
void moveSelectedFieldItemDown();
|
||||
void moveFieldItemUp(QGraphicsItem* fieldItem);
|
||||
void moveSelectedFieldItemUp();
|
||||
void moveFieldItemOnTop(QGraphicsItem* fieldItem);
|
||||
void moveSelectedFieldItemOnTop();
|
||||
void moveFieldItemOnBottom(QGraphicsItem* fieldItem);
|
||||
void moveSelectedFieldItemOnBottom();
|
||||
|
||||
private slots:
|
||||
void displayResizeRects(bool move = false);
|
||||
@@ -160,8 +164,8 @@ class SimulScene : public QGraphicsScene {
|
||||
QList<HomoEFieldItem*> calcEFieldList;
|
||||
QList<HomoBFieldItem*> calcBFieldList;
|
||||
|
||||
static const qreal FieldDefaultZValue = 10; //default z-value fuer Felder
|
||||
static const qreal FieldZStep = 1e-50; //schritt, um den der z-index erhoeht wird
|
||||
static const qreal FieldDefaultZValue = 10.0; //default z-value fuer Felder
|
||||
static const qreal FieldZStep = 1e-10; //schritt, um den der z-index erhoeht wird
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user