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 :

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;
}
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.
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.. :/