Qt设置windows桌面壁纸

使用函数:

SystemParametersInfo,具体参数看已通过百度或谷歌去搜索。

QString src = tr("F:/workspace/DesktopMedia/debug/downloadDir/120323070238652.jpg"); 
TCHAR *ptch = (TCHAR *)src.toStdWString().c_str(); // 转换成宽字节,很重要,否则显示不了图片
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,ptch, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE );


调试程序:

BOOL lres = SystemParametersInfoW(
                SPI_SETDESKWALLPAPER,
                0,
                (PVOID)TEXT("F:/workspace/DesktopMedia/debug/downloadDir/120323070238652.jpg"),
                //                (PVOID)ptch,
                SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);
    LPVOID lpMsgBuf;
    FormatMessage(
                FORMAT_MESSAGE_ALLOCATE_BUFFER |
                FORMAT_MESSAGE_FROM_SYSTEM |
                FORMAT_MESSAGE_IGNORE_INSERTS,
                NULL,
                GetLastError(),
                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
                (LPTSTR) &lpMsgBuf,
                0,
                NULL
                );
    // Process any inserts in lpMsgBuf.
    // ...
    // Display the string.
    MessageBox(NULL,(LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK | MB_ICONINFORMATION );
    // Free the buffer.
    LocalFree( lpMsgBuf );

    if (!lres)
    {
        MessageBox(NULL,TEXT("ERROR"),TEXT("FAIL"),MB_OK);
    }


这里需要说一下,如果不使用TCHAR,可以使用宏TEXT。TEXT只能和常量字符串搭配使用,无法和变量配合。

Windows操作系统下,使用Qt设置桌面图标可以通过以下步骤完成。 首先,我们需要在Qt项目的.pro文件中添加一些配置。打开.pro文件,找到类似于"TEMPLATE"和"TARGET"的行,添加以下配置: ``` win32 { TARGET = MyApp RC_FILE = resources/icons.rc } ``` 其中"TARGET"是你的应用程序的名称,"RC_FILE"是一个资源文件,用于设置图标。 接下来,我们需要创建一个资源文件icons.rc,并将其保存在resources文件夹中(如果没有该文件夹请自行创建)。在icons.rc文件中,添加以下内容: ``` IDI_ICON1 ICON "path/to/icon.ico" ``` 其中"path/to/icon.ico"是你选择的图标文件的路径。确保路径是正确的,图标文件是一个.ico格式的图标文件。 然后,我们需要在main函数的开始位置调用以下代码,将应用程序图标设置为桌面图标: ``` #ifdef Q_OS_WIN QFile iconFile(":/path/to/icon.ico"); if(iconFile.exists()) { QSettings settings("HKEY_CURRENT_USER\\Control Panel\\Desktop",""); settings.setValue("WallPaper",""); settings.setValue("TileWallPaper","0"); settings.setValue("WallpaperStyle","2"); settings.sync(); QProcess::execute("attrib +s +h +r filename.ico"); if(QFile::copy(QStringLiteral(":/path/to/icon.ico"),"filename.ico")) { QFile::remove("filename.ico2"); // 清理上次复制时的遗留文件 } QProcess::execute("attrib +s +h +r filename.ico"); QSettings reg("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Icons",QSettings::NativeFormat); if (reg.isArray("IconService")) { if (QMessageBox::Yes == QMessageBox::information(NULL,QObject::tr("Warning"),QObject::tr("Reset Desktop Icon to Default Image?"),QMessageBox::Yes,QMessageBox::No)) { reg.remove("IconService"); } } if (!reg.isArray("IconService")) { reg.setValue("IconService",0); } } #endif ``` 以上代码会将资源文件中指定的图标拷贝到应用程序目录下,并将其设为桌面图标。 最后,重新编译和运行应用程序,即可在Windows桌面上看到设置好的图标。请确保图标文件的路径和命名是正确的,并且应用程序保存的图标文件已经设置为隐藏、系统和只读属性,以保证图标的正确显示。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值