QT5.13 工作列顯示問題
- 1.問題現象
- 2.出現原因
- 3.解決方案
- 4.測試腳本(.bat)
1.問題現象
打開程式有時可以正确顯示工作列圖示
但是有時圖示一閃而過 顯示一片黑(底部工作列的背景顔色)詳情如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyROBlLzIjNwADN0QTMyEzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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