Bonjour,
Difficile de donner un titre court au problème que je rencontre. Pour simplifier j'ai une vue dérivée de QGraphicsView. Dans celle-ci j'instancie et j'ajoute à sa scène un QGraphicsItemGroup. Dans ce groupe il y a notamment un QGraphicsProxyWidget qui embarque un bête QPushButton. Le soucis rencontré et que ce QPushButton est complétement inefficient : il n'émet plus de signaux et ne semble plus recevoir l'événement "moussePressEvent" (ou son équivalent dans une scène).
Un peu de pseudo-code simplifié pour illustrer :
Les zValue sont okay, les macros Q_OBJECT qui peuvent expliquer ce genre de soucis dans d'autres configurations sont présentes là ou c'est nécessaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QGraphicsItemGroup> #include <QGraphicsProxyWidget> #include <QPushButton> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->graphicsView->setScene(new QGraphicsScene); QGraphicsProxyWidget* proxy = new QGraphicsProxyWidget(); QPushButton* btn = new QPushButton(); proxy->setWidget(btn); QGraphicsItemGroup* group = new QGraphicsItemGroup(); group->addToGroup(proxy); ui->graphicsView->scene()->addItem(group); } MainWindow::~MainWindow() { delete ui; }
Et si je sors mon QGraphicsProxyWidget du groupe, plus de soucis, le bouton répond normalement.
A force de recherche, j'ai pu tomber sur une fonction deprecated maintenant: void setHandlesChildEvents(bool enabled) qui semblait adaptée pour résoudre mon soucis mais je ne trouve pas d'équivalent en 4.7.3..
Merci de votre aide !
[EDIT] MAJ du code pour le rendre plus lisible.. Je commence à me demander si je suis pas tombé sur un bug de Qt.. :/
Partager