Search code examples
windowsqtqpixmaphbitmapqtwinextras

Getting a HBITMAP from a QPixmap in QT5 (Windows)


Now that QPixmap::toWinHBITMAP() has been deprecated, I can't find a way to get an HBITMAP from a QPixmap (or QImage).

Googling, I found there's a function called qt_pixmapToWinHBITMAP() which seems would do what I need, but I can't find what module I should enable -if any- in my .pro file or what header I should include to use it, or perhaps something else.

The reason I need a HBITMAP is to create a video using VFW. Of course, I'd love to be able to do that using only Qt. There's the QtMultimedia module, but as far as I can tell it doesn't export video, so I guess I'm stuck with using the windows api directly.

Any help would be appreciated.


Solution

  • I found it!

    All I needed was QtWinExtras

    http://qt.gitorious.org/qt/qtwinextras

    My code now looks something like this:

    #define WIN32_LEAN_AND_MEAN
    #include <windows.h>
    #include <qt_windows.h>
    #include <QtWinExtras/QWinFunctions>
    
    
    ...
    QPixmap pix(QSize(w,h));
    ...
    HBITMAP hbm = QWinExtras::toHBITMAP(pix);
    ...
    ::DeleteObject(hbm);
    

    I don't know if I need to include all those headers, but it works for me.