Qt创建任务栏进度条
生活随笔
收集整理的這篇文章主要介紹了
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创建任务栏进度条的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【12306图片验证12小时内被破解,验
- 下一篇: sql已经完成,生成表