Gat*_*ato 11 windows qt hbitmap qpixmap qtwinextras
既然不推荐使用QPixmap :: toWinHBITMAP(),我找不到从QPixmap(或QImage)获取HBITMAP的方法.
谷歌搜索,我发现有一个名为qt_pixmapToWinHBITMAP()的函数似乎可以做我需要的,但我找不到我应该启用的模块-if any-在我的.pro文件中或者我应该包含哪些标题来使用它,或者也许别的东西.
我需要HBITMAP的原因是使用VFW创建视频.当然,我很乐意只使用Qt来做到这一点.有QtMultimedia模块,但据我所知,它不会导出视频,所以我想我一直坚持使用windows api.
任何帮助,将不胜感激.
Gat*_*ato 10
我找到了!
我需要的只是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);
Run Code Online (Sandbox Code Playgroud)
我不知道是否需要包含所有这些标题,但它对我有用.
小智 5
QtWinExtras 不是必需的。只需使用 qt_pixmapToWinHBITMAP(),就像 QtWinExtras 一样。
在您包含以下内容后立即声明:
QT_BEGIN_NAMESPACE
Q_GUI_EXPORT HBITMAP qt_pixmapToWinHBITMAP(
const QPixmap &p, int hbitmapFormat = 0);
Run Code Online (Sandbox Code Playgroud)
并使用它。例如,如果您想从 QRC 资源中检索它:
QPixmap pixmap(":/image.bmp");
HBITMAP hBitmap = qt_pixmapToWinHBITMAP(pixmap);
Run Code Online (Sandbox Code Playgroud)