Using Qt with DirectX?


What exactly are my options? I have programs I need to write in OpenGL and DirectX, and I'd like to use Qt for OpenGL, and not have to re-implement half my program for the DirectX components of my task.

I've looked on Google and I have found references to people complaining about Direct3D being a dependency of Qt, and people talking about implementing QD3DWidget sub-classing QWidget in a similar fashion to QGLWidget, yet nobody talked about how to implement it or where any examples are.

I need help. I want to know if it is possible? What would I need to do to get it working? Has it been done before?

10/29/2009 12:18:18 PM

Accepted Answer

its pretty straightforward than I thought,

-> Create a QWidget
-> Override paintEngine() method, does nothing, just returns NULL
-> Assign HWND to widget->winId()

    #ifdef USE_QTGUI
        QApplication a(argc, argv);
        CD3DWidget wndw;;    wndw.resize(1280,960);
        hWnd = wndw.winId();
        hWnd = CreateAppWindow(name,300,300);

       //CD3DWidget class contains only the following definitions
    CD3DWidget::CD3DWidget(QWidget * parent):QWidget(parent){      }
    QPaintEngine *CD3DWidget::paintEngine (){          return NULL;        }



12/28/2015 2:54:31 PM

List of changes:

Qt 4.6 introduces many new features and improvements as well as bugfixes over the 4.5.x series.


  • The experimental Direct3D paint engine has been removed. The reason for this is that Nokia focuses on OpenGL for desktop hardware accelerated rendering.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow