2010-05-30 4 views
0

J'ai compris comment utiliser QPainter pour dessiner des rectangles. Maintenant, je veux avoir une zone de dessin où si l'utilisateur clique, un rectangle 1x1 est dessiné où le pointeur de la souris est. Pour ce faire, je suppose que j'ai besoin d'un widget Qt transparent qui supporte le signal clicked().Widget Qt transparent générique qui peut intercepter les clics?

Comment créer un widget aussi transparent? Ou y a-t-il autre chose que je peux utiliser? Peut-être que je peux seulement utiliser le signal clicked() de la fenêtre?

Répondre

0

Vous n'avez pas vraiment besoin d'un widget transparent?

Tout ce que vous avez à faire est de mettre en œuvre

protected: 
    void mousePressEvent(QMouseEvent *event); 

pour votre widget et dessiner votre rectangle.

Jetez un oeil à scribble example qui vient avec Qt.

+0

Ça m'a l'air utile, mais ce tutoriel fait beaucoup plus que ce dont j'ai besoin, donc c'est un peu confus. J'ai ajouté deux fichiers appelés 'drawingPad.cpp' et' drawingPad.h' au projet qui contient la définition de classe de DrawingPad. J'ai ajouté ceci au constructeur de MainWindow: 'drawingPad = new DrawingPad; setCentralWidget (drawingPad); 'Puis j'obtiens cette erreur:" drawingPad n'a pas été déclaré dans cette portée ". Quelles sont les causes possibles? J'ai inclus drawingPad.h. Est-ce que Qt Designer dispose d'une fonctionnalité spéciale pour importer des widgets personnalisés? – Pieter

+0

http://doc.qt.nokia.com/4.6/designer-creating-custom-widgets.html Je ne peux que deviner, mais peut-être que vous avez besoin de 'DrawingPad * drawingPad = new DrawingPad;' – Anton

+0

Maintenant, je reçois le "collect2 : ld a renvoyé 1 état de sortie "erreur. – Pieter