天天看點

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

           

繼續閱讀