天天看点

QT 任务栏图标显示问题1.问题现象2.出现原因3.解决方案4.测试脚本(.bat)

QT5.13 任务栏显示问题

  • 1.问题现象
  • 2.出现原因
  • 3.解决方案
  • 4.测试脚本(.bat)

1.问题现象

打开程序有时可以正确显示任务栏图标

但是有时图标一闪而过 显示一片黑(底部任务栏的背景颜色)详情如下:

QT 任务栏图标显示问题1.问题现象2.出现原因3.解决方案4.测试脚本(.bat)
QT 任务栏图标显示问题1.问题现象2.出现原因3.解决方案4.测试脚本(.bat)

2.出现原因

经测试,应该是

RC_ICONS = path/name.ico 和 setWindowIcon 设置图标引起的冲突
//我的问题代码(例子)
RC_ICONS = logo.ico                   // pri文件中
setWindowIcon(QIcon(":logo.ico"));    // 窗体构造函数 图标一样也会有问题
//setWindowIcon(QIcon(":logo.png"));  
           

3.解决方案

去掉setWindowIcon相关代码

只在pri文件中设置图标 RC_ICONS = path/name.ico

或者使用QWinTaskbarButton进行覆盖 or 刷新

// 窗体构造函数中
	this->show(); // 得先show才能获取windowHandle
    QWinTaskbarButton *button = new QWinTaskbarButton(this);
    button->setWindow(this->windowHandle());               // 获取窗体handle
    button->setOverlayIcon(QIcon(":logo.ico"));            // 不设置覆盖图标图标 只显示原图标也可以解决此bug
    QWinTaskbarProgress *progress = button->progress();    // 进度
    progress->setVisible(true);
    progress->setValue(0);
           

4.测试脚本(.bat)

@echo off
title  打开关闭程序测试 -- das白

:end
    start E:\gy\cs\cs.exe             
    echo "started,等待7秒后关闭"
    choice /t 7 /c YN /d Y
    taskkill /f /im cs.exe
    echo %time% 关闭程序
    ::timeout /T 5
goto end
::帮助命令 help taskkill  、timeout /? 、 choice /? 、help start

           

继续阅读