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:
xavierqet
2006-11-26 21:35:05 +00:00
parent 8258854558
commit f1bfb71f1e
2 changed files with 40 additions and 21 deletions

View File

@@ -25,6 +25,7 @@ Conducteur::Conducteur(Borne *p1, Borne* p2, Element *parent, QGraphicsScene *sc
setPen(t);
// calcul du rendu du conducteur
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);
}
/**
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
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 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 -> setRenderHint(QPainter::Antialiasing, false);
qp -> setRenderHint(QPainter::TextAntialiasing, 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();
}

View File

@@ -81,11 +81,18 @@ void SchemaVue::selectInvert() {
Supprime les composants selectionnes
*/
void SchemaVue::supprimer() {
QList<QGraphicsItem *> garbage_elmt;
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()) {
// 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);
// pour chaque enfant de l'element
foreach (QGraphicsItem *child, qgi -> children()) {
@@ -98,6 +105,7 @@ void SchemaVue::supprimer() {
}
}
}
}
scene -> clearSelection();
// "destroying" the wires, removing them from the scene and stocking them into the « garbage »