Бібліотека Qt надає ряд платформозвісімих можливостей. Одна з таких можливостей для Windows - використання рядка прогресу на іконці панелі завдань. Можливість ця доступна для ОС починаючи з версії 7.
Для використання цієї та деяких інших можливостей необхідно підключити модуль winextras,
QT += winextras
підключити бібліотеку
#include <QtWinExtras>
і додати макроси
QT_FORWARD_DECLARE_CLASS(QWinTaskbarButton) QT_FORWARD_DECLARE_CLASS(QWinTaskbarProgress)
У конструкторі головного вікна розміщуємо
if (QtWin::isCompositionEnabled()) QtWin::extendFrameIntoClientArea(this, 0, 0, 0, 0); else QtWin::resetExtendedFrame(this);
Щоб відобразити рядок прогресу необхідно, створити об'єкт класу QWinTaskbarButton,
QWinTaskbarButton *button; button = new QWinTaskbarButton(this);
прив'язати його до вікна додатка,
button->setWindow(windowHandle());
створити покажчик на об'єкт класу QWinTaskbarProgress
QWinTaskbarProgress *progress;
і привласнити йому значення
progress = button->progress();
Багато в чому об'єкт QWinTaskbarProgress ідентичний об'єкту QProgressBar. Для нього можна задати межі зміни відмінні від значень за замовчуванням (0 і 100) за допомогою методів setMaximum (int), setMinimum (int), setRange (int, int) і задати поточне значення за допомогою setValue (int). Метод show () робить смугу прогресу видимої, метод hide () має зворотний ефект.
Смуга прогресу відображається одним з 3х кольорів: зелений (активний режим), жовтий (пауза), червоний (зупинка). Після створення смуга прогресу знаходиться в активному режимі. Встановити або зняти режим паузи можна за допомогою функції setPaused (bool). Виклик методу stop () переводить в смугу в режим зупинки. З цього режиму вивести її вже не можна. Єдина можливість видалити об'єкт QWinTaskbarButton і створити новий. При цьому в будь-якому з режимів можна змінювати значення смуги прогресу в бік збільшення або зменшення.
Приклад програми, що містить приклад програми, можна завантажити за посиланням .
Я так понимаю под линукс такое отсутствует?