【问题标题】:Getting a HBITMAP from a QPixmap in QT5 (Windows)从 QT5 中的 QPixmap 获取 HBITMAP (Windows)
【发布时间】:2013-07-01 22:23:05
【问题描述】:

现在 QPixmap::toWinHBITMAP() 已被弃用,我找不到从 QPixmap(或 QImage)获取 HBITMAP 的方法。

谷歌搜索,我发现有一个名为 qt_pixmapToWinHBITMAP() 的函数似乎可以满足我的需要,但我找不到我应该在我的 .pro 文件中启用的模块(如果有的话)或我应该包含使用的头文件它,或者别的什么。

我需要 HBITMAP 的原因是使用 VFW 创建视频。当然,我希望能够仅使用 Qt 来做到这一点。有 QtMultimedia 模块,但据我所知它不会导出视频,所以我想我只能直接使用 windows api。

任何帮助将不胜感激。

【问题讨论】:

  • 您好,您找到替代方案了吗?我刚刚升级到 Qt5,我的 'fromWinHICON' 和 'fromWinHBITMAP' 调用面临同样的问题..

标签: windows qt qpixmap hbitmap qtwinextras


【解决方案1】:

我找到了!

我只需要 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);

我不知道是否需要包含所有这些标题,但它对我有用。

【讨论】:

    【解决方案2】:

    QtWinExtras 不是必需的。 只需像 QtWinExtras 那样使用 qt_pixmapToWinHBITMAP()。

    在您包含后立即声明:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多