Получение HBITMAP из QPixmap в QT5 (Windows)

теперь, когда QPixmap:: toWinHBITMAP() устарел, я не могу найти способ получить HBITMAP из QPixmap (или QImage).

погуглив, я нашел там функцию qt_pixmapToWinHBITMAP (), который будет делать то, что мне нужно, но я не могу найти какой модуль надо включить -если любой - в моем .файл Pro или какой заголовок я должен использовать его, или, возможно, что-то еще.

причина, по которой мне нужен HBITMAP, - создать видео с помощью VFW. Конечно, я хотел бы иметь возможность для этого используется только Qt. Есть модуль QtMultimedia, но, насколько я могу судить, он не экспортирует видео, поэтому я думаю, что я застрял с использованием Windows api напрямую.

любая помощь будет оценили.

2 ответов


Я нашел ее!

все, что мне было нужно, это QtWinExtras

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

мой код теперь выглядит так:

#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);

Я не знаю, нужно ли мне включать все эти заголовки, но это работает для меня.


QtWinExtras не требуется. Просто используйте qt_pixmapToWinHBITMAP (), как это делает QtWinExtras.

объявите его вскоре после вашего включает в себя:

QT_BEGIN_NAMESPACE
Q_GUI_EXPORT HBITMAP qt_pixmapToWinHBITMAP(
    const QPixmap &p, int hbitmapFormat = 0);

и просто использовать его. Например, если вы хотите получить его из ресурсов QRC:

QPixmap pixmap(":/image.bmp");
HBITMAP hBitmap = qt_pixmapToWinHBITMAP(pixmap);