首先,在Resource.h里面定义ID:
例如:
#define IDB_BG 131
IDB_BG RCPNG "res//背景.png"
其中,RCPNG为自定义资源类型的名称
然后需要CImage这个ATL类,以及以下这个方法:
//////////////////////////////////////////////////////////////////////////
/// 从资源文件中加载图片
/// @param [in] pImage 图片指针
/// @param [in] nResID 资源号
/// @param [in] lpTyp 资源类型
//////////////////////////////////////////////////////////////////////////
static bool LoadImageFromResource(IN CImage* pImage,
IN UINT nResID,
IN LPCSTR lpTyp)
{
if ( pImage == NULL) return false
pImage->Destroy()
// 查找资源
HRSRC hRsrc = ::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp)
if (hRsrc == NULL) return false
// 加载资源
HGLOBAL hImgData = ::LoadResource(AfxGetResourceHandle(), hRsrc)
if (hImgData == NULL)
{
::FreeResource(hImgData)
return false
}
// 锁定内存中的指定资源
LPVOID lpVoid = ::LockResource(hImgData)
LPSTREAM pStream = NULL
DWORD dwSize = ::SizeofResource(AfxGetResourceHandle(), hRsrc)
HGLOBAL hNew = ::GlobalAlloc(GHND, dwSize)
LPBYTE lpByte = (LPBYTE)::GlobalLock(hNew)
::memcpy(lpByte, lpVoid, dwSize)
// 解除内存中的指定资源
::GlobalUnlock(hNew)
// 从指定内存创建流对象
HRESULT ht = ::CreateStreamOnHGlobal(hNew, TRUE, &pStream)
if ( ht != S_OK )
{
GlobalFree(hNew)
}
else
{
// 加载图片
pImage->Load(pStream)
GlobalFree(hNew)
}
// 释放资源
::FreeResource(hImgData)
return true
}
补充:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
方法一:通过qtcreator新建一个文件filename.qrc,
1、将图片添加到filename.qrc文件中:选择Add Prefix得到/new/prefix1,简单点改为/,再选Add Files,将文件添加进去,如images/photo.png
或者用文本编辑filename.qrc文件,改为
images/photo.png
2、将filename.qrc添加到工程中,在*.pro中添加:
RESOURCES += filename.qrc
3、在代码中添加
setWindowIcon(QIcon(":/images/photo.png"))//为窗口标题添加图片,注意要路径要添加 ": "
方法二:创建rc文件
1 在工程目录里创建文件 logo.rc,里面添加一行
IDI_ICON1 ICON DISCARDABLE "logo.ico"
2 将logo.ico文件放到工程目录里,与logo.rc同一目录
3 在*.pro文件里添加一行
RC_FILE = logo.rc
4 在main.cpp文件的构造函数里添加一行
setWindowIcon(QIcon("./logo.ico"))//窗口标题设置图片,同时也为应用程序设置图标
我不知道你说的图标是指哪一方面,是生成的exe可执行文件的图标,还是在执行过程中,窗口的图标,两个我都说一下:1.生成的exe可执行文件的图标
找一个ico文件,假设在.pro所在当前目录下为main.ico
写一个.rc文件,比如为main.rc内容如下:
IDI_ICON1 ICONDISCARDABLE "main.ico"
然后在.pro文件中加入:
win32:RC_FILE = main.rc
然后再编译,就能看到可执行程序加上了图标了。
2.在程序中添加图标,比如窗口的左上方的图标,就是WindowIcon
setWindowIcon(QIcon(QPixmap(":/images/icon.png")))
这里的图标就是存放在images文件夹下的图标文件,在用这句话之前必须要写.qrc文件,就是XML格式的资源文件,举例如下:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>images/icon.png</file>
</qresource>
</RCC>
先解释这么多
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)