form1.cpp:111:34: No member named 'fromHBITMAP' in 'QPixmap'
时间: 2023-07-29 17:12:31 浏览: 156
未命名1.cpp
`QPixmap::fromHBITMAP` 方法是在 Qt5.14 中引入的,如果你使用的是 Qt5.13 或更早的版本,该方法将不可用。如果你必须在旧版本的 Qt 中使用 `QPixmap::fromHBITMAP` 方法,可以尝试使用以下替代方案:
```c++
HBITMAP hbm = ... // 某个 HBITMAP 对象
BITMAP bmp = {};
GetObject(hbm, sizeof(BITMAP), &bmp);
HDC hdc = CreateCompatibleDC(nullptr);
HGDIOBJ hobjOld = SelectObject(hdc, hbm);
QPixmap pixmap = QPixmap::fromImage(QImage((uchar*)bmp.bmBits, bmp.bmWidth, bmp.bmHeight, bmp.bmWidthBytes, QImage::Format_ARGB32));
SelectObject(hdc, hobjOld);
DeleteDC(hdc);
```
这个方法将创建一个兼容 DC(设备上下文),然后将 HBITMAP 对象选入到 DC 中,最后将 HBITMAP 对象中的像素数据复制到一个 QImage 对象中,最终生成一个 QPixmap 对象。
请注意,这个方法将创建一个临时的兼容 DC(设备上下文),并且可能会涉及到昂贵的像素数据复制操作,因此可能会比 `QPixmap::fromHBITMAP` 方法慢。此外,由于这个方法需要直接访问 HBITMAP 对象的像素数据,因此它可能会受到一些平台特定的限制。
阅读全文