mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-21 00:30:53 +01:00
Ajout de la possibilite de selectionner et supprimer des conducteurs
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@36 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -25,6 +25,7 @@ Conducteur::Conducteur(Borne *p1, Borne* p2, Element *parent, QGraphicsScene *sc
|
|||||||
setPen(t);
|
setPen(t);
|
||||||
// calcul du rendu du conducteur
|
// calcul du rendu du conducteur
|
||||||
calculeConducteur();
|
calculeConducteur();
|
||||||
|
setFlags(QGraphicsItem::ItemIsSelectable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,14 +49,6 @@ void Conducteur::update(qreal x, qreal y, qreal width, qreal height) {
|
|||||||
QGraphicsPathItem::update(x, y, width, height);
|
QGraphicsPathItem::update(x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Destructeur du Conducteur. Avant d'etre detruit, le conducteur se decroche des bornes
|
|
||||||
auxquelles il est lie.
|
|
||||||
*/
|
|
||||||
/*Conducteur::~Conducteur() {
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour le QPainterPath constituant le conducteur pour obtenir
|
Met a jour le QPainterPath constituant le conducteur pour obtenir
|
||||||
un conducteur uniquement compose de droites reliant les deux bornes.
|
un conducteur uniquement compose de droites reliant les deux bornes.
|
||||||
@@ -125,12 +118,30 @@ void Conducteur::calculeConducteur() {
|
|||||||
@param qsogi Les options de style pour le conducteur
|
@param qsogi Les options de style pour le conducteur
|
||||||
@param qw Le QWidget sur lequel on dessine
|
@param qw Le QWidget sur lequel on dessine
|
||||||
*/
|
*/
|
||||||
void Conducteur::paint(QPainter *qp, const QStyleOptionGraphicsItem *qsogi, QWidget *qw) {
|
void Conducteur::paint(QPainter *qp, const QStyleOptionGraphicsItem */*qsogi*/, QWidget */*qw*/) {
|
||||||
qp -> save();
|
qp -> save();
|
||||||
qp -> setRenderHint(QPainter::Antialiasing, false);
|
qp -> setRenderHint(QPainter::Antialiasing, false);
|
||||||
qp -> setRenderHint(QPainter::TextAntialiasing, false);
|
qp -> setRenderHint(QPainter::TextAntialiasing, false);
|
||||||
qp -> setRenderHint(QPainter::SmoothPixmapTransform, false);
|
qp -> setRenderHint(QPainter::SmoothPixmapTransform, false);
|
||||||
QGraphicsPathItem::paint(qp, qsogi, qw);
|
|
||||||
|
// recupere le QPen et la QBrush du QPainter
|
||||||
|
QPen pen = qp -> pen();
|
||||||
|
QBrush brush = qp -> brush();
|
||||||
|
|
||||||
|
// attributs par defaut
|
||||||
|
pen.setJoinStyle(Qt::MiterJoin);
|
||||||
|
pen.setCapStyle(Qt::SquareCap);
|
||||||
|
pen.setColor(isSelected() ? Qt::red : Qt::black);
|
||||||
|
pen.setStyle(Qt::SolidLine);
|
||||||
|
pen.setWidthF(1.0);
|
||||||
|
brush.setStyle(Qt::NoBrush);
|
||||||
|
|
||||||
|
// affectation du QPen et de la QBrush modifies au QPainter
|
||||||
|
qp -> setPen(pen);
|
||||||
|
qp -> setBrush(brush);
|
||||||
|
|
||||||
|
qp -> drawPath(path());
|
||||||
|
//QGraphicsPathItem::paint(qp, qsogi, qw);
|
||||||
qp -> restore();
|
qp -> restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,11 +81,18 @@ void SchemaVue::selectInvert() {
|
|||||||
Supprime les composants selectionnes
|
Supprime les composants selectionnes
|
||||||
*/
|
*/
|
||||||
void SchemaVue::supprimer() {
|
void SchemaVue::supprimer() {
|
||||||
|
|
||||||
QList<QGraphicsItem *> garbage_elmt;
|
QList<QGraphicsItem *> garbage_elmt;
|
||||||
QList<QGraphicsItem *> garbage_conducteurs;
|
QList<QGraphicsItem *> garbage_conducteurs;
|
||||||
|
|
||||||
// useless but careful : creating two lists : one for wires, one for elements
|
// creation de deux listes : une pour les conducteurs, une pour les elements
|
||||||
foreach (QGraphicsItem *qgi, scene -> selectedItems()) {
|
foreach (QGraphicsItem *qgi, scene -> selectedItems()) {
|
||||||
|
// pour chaque qgi selectionne, il s'agit soit d'un element soit d'un conducteur
|
||||||
|
if (qgraphicsitem_cast<Conducteur *>(qgi)) {
|
||||||
|
// s'il s'agit d'un conducteur, on le met dans la liste des conducteurs
|
||||||
|
if (!garbage_conducteurs.contains(qgi)) garbage_conducteurs.append(qgi);
|
||||||
|
} else if (qgraphicsitem_cast<Element *>(qgi)) {
|
||||||
|
// s'il s'agit d'un element, on veille a enlever ses conducteurs
|
||||||
if (!garbage_elmt.contains(qgi)) garbage_elmt.append(qgi);
|
if (!garbage_elmt.contains(qgi)) garbage_elmt.append(qgi);
|
||||||
// pour chaque enfant de l'element
|
// pour chaque enfant de l'element
|
||||||
foreach (QGraphicsItem *child, qgi -> children()) {
|
foreach (QGraphicsItem *child, qgi -> children()) {
|
||||||
@@ -98,6 +105,7 @@ void SchemaVue::supprimer() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
scene -> clearSelection();
|
scene -> clearSelection();
|
||||||
|
|
||||||
// "destroying" the wires, removing them from the scene and stocking them into the « garbage »
|
// "destroying" the wires, removing them from the scene and stocking them into the « garbage »
|
||||||
|
|||||||
Reference in New Issue
Block a user