2010-12-03 18 views

Respuesta

10

Creo que usaron las funciones de Win7 API y las encapsularon en su biblioteca. Puede incluir a mano esos encabezados y usarlos también. Aquí puede encontrar un tema de ayuda y un proyecto de demostración: codeproject.com/KB/vista/SevenGoodiesTaskbarStatus.aspx

Pero es solo para win7. No crossplatform. Buena suerte

actualización mar 05, 2014

Esta pregunta se hizo hace mucho tiempo y muchas cosas han cambiado desde entonces. Para aquellos que se hacen la misma pregunta hoy (comienzos de 2014), entonces mi respuesta personal es que Qt 5 es totalmente compatible con el progreso en la barra de tareas y diferentes tipos de hermosos extras. Ver QWinTaskbarProgress (UPD Nov 28 de, el año 2016) para obtener detalles

+1

Muchas gracias. Aún no he descubierto cómo hacerlo, especialmente con el QtCreater, parece difícil. Tal vez alguien pueda hacer uso de esa publicación: http://www.qtcentre.org/threads/26974-Qt-and-windows-7-new-Api?p=128880#post128880. Creo que tengo que probarlo usando Visual Studio ... – Nedec

0

Puede utilizar la clase QWinTaskbarProgress. Para utilizar esta clase, debe agregar win32:QT += winextras en su archivo .pro.

Aquí es un código de ejemplo que muestra cómo mostrar el valor de una QProgressBar en la barra de tareas de Windows (inspired from this example):

#ifdef _WIN32 //The _WIN32 macro is automatically generated when compiling for Windows 
    #include <QWinTaskbarProgress> 
    #include <QWinTaskbarButton> 
#endif 
QProgressBar *progressBar = new QProgressBar; 
progressBar->show(); 
#ifdef _WIN32 
    QWinTaskbarButton *windowsTaskbarButton = new QWinTaskbarButton; //Create the taskbar button which will show the progress 
    windowsTaskbarButton->setWindow(progressBar->windowHandle()); //Associate the taskbar button to the progress bar, assuming that the progress bar is its own window 
    QWinTaskbarProgress *windowsTaskbarProgress = windowsTaskbarButton->progress(); 
    windowsTaskbarProgress->show(); 
    QObject::connect(loadingWindow, &QProgressBar::valueChanged, [windowsTaskbarProgress](int value){ 
     windowsTaskbarProgress->setValue(value); //Change the value of the progress in the taskbar when the value of the progress bar changes 
    }); 
#endif 
Cuestiones relacionadas