Bonjour,
Je cherche depuis plusieurs jours mais sans succès, à afficher un rectangle à l’aide d’un bouton de souris. La pression sur le bouton me donne le premier point, le relâchement du bouton me donne la position du deuxième point. J’arrive à récupérer les 2 points, j’ai l’impression que le rectangle est créé mais qu’il ne s’affiche pas dans mon QGraphicsView. Depuis j’avance dans une jungle avec un machette émoussée :). Je vous mets mon code ci-dessous: le main.cpp
int main(int argc, char *argv[])
{
QApplication application(argc, argv);
MainWindow Fenetre;
Fenetre.show();
return application.exec();
}
**```
le mainwidow.h:**
```cpp
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void dessineRectangle(QPointF p1, QPointF p2);
protected:
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
private:
QGraphicsView m_vue;
QGraphicsScene m_scene;
QGraphicsRectItem m_rect;
QPointF m_p1;
QPointF m_p2;
};
et le mainwidow.cpp:
MainWindow::MainWindow(QWidget *parent) : QMainWindow (parent)
{
this->resize(500,500);
m_vue.setScene(&m_scene);
m_scene.setSceneRect(0,0,400,400);
m_vue.resize(500,500);
}
MainWindow::~MainWindow()
{
}
void MainWindow::dessineRectangle(QPointF p1, QPointF p2)
{
m_scene.addRect(p1.x(),p1.y(),p2.x(), p2.y());
}
void MainWindow::mousePressEvent(QMouseEvent *event)
{
std::cout << event->pos().x() << " " << event->pos().y() << std::endl;
m_p1 = {m_vue.mapToScene(event->pos())};
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
std::cout << event->pos().x() << " " << event->pos().y() << std::endl;
event->accept();
m_p2 = {m_vue.mapToScene(event->pos())};
dessineRectangle(m_p1, m_p2);
}
Si quelqu’un à une idée? Je vous remercie pour votre aide.
+0
-0