1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class Selection : public QWidget // on hérite de QWidget puisque c'est un objet visible
{
// gestion de la sélection
private:
int m_first; // indice du premier rectangle de la grille contenu dans la selection
int m_last; // indice du dernier rectangle
public:
void updateRange(int first, int last); // on peut mettre à jour les indices first et last
void translateRange(int offset); // on décale first et last et on vérifie les bornes
// gestion de l'affichage des rectangles
public:
void paintEvent(QPaintEvent* e) // on dessine chaque rectangle entre first et last
// gestion du drag&drop
private:
QPoint dragStartPosition;
public:
void mousePressEvent(QMouseEvent *); // on enregistre la position du clic
void mouseMoveEvent(QMouseEvent *e); // si le déplacement est suffisant, on crée un object QDrag
};
class Grille : public QWidget
{
// gestion du drag&drop
public:
Grille(); // on met "setAcceptDrops(true);" pour accepter les drop
void dragEnterEvent(QDragEnterEvent *e); // on accepte les drag venant de "Selection"
void dropEvent(QDropEvent *event); // on calcul le déplacement et on met a jour "Selection"
}; |