2013-07-04 63 views
11

既然QPixmap :: toWinHBITMAP()已被棄用,我無法找到從QPixmap(或QImage)獲取HBITMAP的方法。我發現有一個叫做qt_pixmapToWinHBITMAP()的函數,它似乎會做我所需要的,但我找不到應該啓用的模塊 - 如果在我的.pro文件中有任何 - 或者我應該包含什麼頭文件使用它,或者其他的東西。在QT5中從QPixmap獲取HBITMAP(Windows)

我需要一個HBITMAP的原因是使用VFW創建一個視頻。當然,我希望能夠僅使用Qt來實現這一點。有QtMultimedia模塊,但據我可以告訴它不導出視頻,所以我想我堅持直接使用Windows API。

任何幫助,將不勝感激。

+0

嗨,你有沒有找到任何替代?我剛剛升級到Qt5,並面對與我的'fromWinHICON'和'fromWinHBITMAP'調用相同的問題。 – Dalamber

回答

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

我不知道如果我需要包括所有那些標題,但它的工作原理爲了我。

4

QtWinExtras是沒有必要的。 只需使用qt_pixmapToWinHBITMAP(),就像QtWinExtras一樣。

聲明它的包括後不久:

,只是使用它。 例如,如果你想從QRC資源檢索它:

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