首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Qt 6中将图标转换为QIcon

在Qt 6中将图标转换为QIcon
EN

Stack Overflow用户
提问于 2021-05-12 21:29:10
回答 1查看 151关注 0票数 1

我正在尝试在Qt6中将HICON转换为QIcon/QPixmap。在较老的Qt版本中,曾经有一个fromHICON函数使得这个转换非常容易。不幸的是,他们在Qt6中删除了它,所以我试着按照这个answer自己来做

代码语言:javascript
运行
复制
HDC hdc = GetDC(hwnd);
HBITMAP hbitmap = CreateCompatibleBitmap(hdc, 32, 32);
hdc = CreateCompatibleDC(hdc);
SelectObject(hdc, hbitmap);

// Calculate size of buffer
BITMAP BitmapInfo = {0};
DWORD BitmapImageSize = BitmapInfo.bmHeight * BitmapInfo.bmWidth * (BitmapInfo.bmBitsPixel / 8);

// Allocate memory
BYTE *pBitmapData = new BYTE[BitmapImageSize];
ZeroMemory(pBitmapData, BitmapImageSize);

// Get Bitmap data
GetBitmapBits(hbitmap, BitmapImageSize, pBitmapData);

QImage image = QImage(pBitmapData, 32, 32, QImage::Format_ARGB32_Premultiplied);

ui->label->setPixmap(QPixmap::fromImage(image));
ui->label->setScaledContents(true);

// delete data
delete[] pBitmapData;

然而,我一定是搞砸了什么。图像只是一些随机的噪声,有时应用程序也会崩溃。

Displayed image

附加信息:该图标如下所示:

代码语言:javascript
运行
复制
HICON icon = (HICON)GetClassLong(hwnd, -14);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-13 15:51:02

在Qt6中,QtWin::fromHICON()的实现(除了转换为QPixmap)已经移到了QImage的静态函数中。所以现在你只需要。

代码语言:javascript
运行
复制
  QPixmap pixmap = QPixmap::fromImage(QImage::fromHICON(icon));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67504639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档