日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt创建任务栏进度条

發布時間:2025/3/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt创建任务栏进度条 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、正文

? ? 任務欄進度條是Windows7就引入的一種UI形式,通常用于顯示軟件當前正在執行的任務的進度(如編譯程序的進度、下載任務的進度)。如下:

? ? ?在Qt中使用任務欄進度條也是非常容易的一件事情。Qt框架針對Windows提供了一個單獨的模塊WinExtras。這個模塊中提供了一些類庫和函數,用于實現Windows上特有的功能,如類型轉換、句柄操作、窗口屬性設置等。當然也包括了此次我們要說的任務欄進度條。那么就直接來看代碼吧:

#include "TaskbarProgress.h"#include <QAbstractButton> #include <QTimer>TaskbarProgress::TaskbarProgress(QWidget *parent): QMainWindow(parent) {ui.setupUi(this);timer = new QTimer;timer->setInterval(1000);timer->setSingleShot(false);windowsTaskbarButton = new QWinTaskbarButton(this); //Create the taskbar button which will show the progressconnect(timer, &QTimer::timeout, this, &TaskbarProgress::onTimeout);connect(ui.startButton, &QAbstractButton::clicked, this, &TaskbarProgress::onButtonClicked); }void TaskbarProgress::onButtonClicked() {windowsTaskbarButton->setWindow(windowHandle()); //Associate the taskbar button to the progress bar, assuming that the progress bar is its own windowwindowsTaskbarProgress = windowsTaskbarButton->progress();windowsTaskbarProgress->setRange(0, 100);timer->start(); }void TaskbarProgress::onTimeout() {windowsTaskbarProgress->setValue(windowsTaskbarProgress->value() + 1);windowsTaskbarProgress->show(); }

? ? 代碼邏輯簡單,點擊開始按鈕之后開始設置任務欄進度條。注意到這里有個坑,windowHandle()調用要在窗口顯示出來之后才能返回正確的窗口句柄,否則返回的null,導致任務欄進度條無法正常顯示。

二、參考鏈接

1.?https://forum.qt.io/topic/70672/windowhandle-will-return-null

總結

以上是生活随笔為你收集整理的Qt创建任务栏进度条的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。