Bonjour à tous,
J'ai développé il y a quelque temps une appli, en m'inspirant de la demo boxes de qt, avec du contenu opengl mélangé avec des qwigets avec qt 4.5.3 :

Lors du passage à qt 4.7 (et 4.6) L'opengl n'est plus affiché et les qwidgets perdent leur bordures :

J'ai recréé ma façon de faire dans un petit morceau de code :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
 
#include <QtGui/QApplication>
#include <QGraphicsScene>
#include <QGLWidget>
#include <QDialog>
#include <QGraphicsProxyWidget>
#include <QGraphicsView>
#include <QPainter>
class my_scene : public QGraphicsScene
{
 
public:
    explicit my_scene(QObject *parent = 0) :
            QGraphicsScene
        (parent)
        {
            QDialog *widget = new QDialog;
            widget->resize(50,50);
            QGraphicsProxyWidget *widgetp = new QGraphicsProxyWidget();
            widgetp->setWidget(widget);
            widgetp->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
            addItem(widgetp);
        }
    void drawBackground(QPainter *painter, const QRectF &rect){
 
            painter->beginNativePainting(); //>= 4.6 only
            glClearColor(0.4,0.4,0.4,1.);
            glClear(GL_COLOR_BUFFER_BIT);
            glViewport(0, 0, painter->device()->width(),painter->device()->height());
            glMatrixMode(GL_PROJECTION);
            glPushMatrix();
            glLoadIdentity();
            glMatrixMode(GL_MODELVIEW);
            glPushMatrix();
            glLoadIdentity();
            glOrtho(-1.0,1.0,-1.0,1.0,-50,50);
            glMatrixMode(GL_MODELVIEW);
            glColor3f(1.,0.,0.);
            glBegin(GL_LINES);
                glVertex2f(-1.0,0.0);
                glVertex2f(1.0,0.0);
            glEnd();
            glPopMatrix();
            glMatrixMode(GL_PROJECTION);
            glPopMatrix();
            painter->endNativePainting(); //>= 4.6 only
 
            painter->setPen(Qt::blue);
            painter->drawLine(0,0,200,200);
        }
};
 
class Widget : public QGraphicsView
{
 
 
public:
    Widget(QWidget *parent = 0) :
            QGraphicsView(parent)
        {
            QGLWidget *widget = new QGLWidget(QGLFormat(QGL::SampleBuffers));
            widget->makeCurrent();
            my_scene *s = new my_scene;
            setViewport(widget);
            setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
            setScene(s);
            resize(200,200);
        }
};
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
 
    return a.exec();
}
Dans ce cas l'opengl (la ligne rouge) est traité correctement ce qui me laisse un peu d'espoir pour trouver une solution à mon problème d'affichage mais par contre l'habillage de fenêtre disparait lorsque je le compile et exécute avec qt 4.7 :

Avec 4.5.3 cela marche:


Est ce que quel qu'un sais d'où cela peut -il venir? Qu'est ce qui a changé dans qt?

Merci,

Sébastien