В даний час немає спеціальної бібліотеки для доступу до функцій запуску з Qt C ++. Існує бібліотека лібільності, але вона сильно орієнтована на гліб, тому відносно не підходить до Qt. Як було сказано в іншій відповіді, найзручніший спосіб інтеграції з пусковим пристроєм - це використання dbus API низького рівня .
Основна концепція того, як інтегруватися з пусковим пристроєм, - це надіслати сигнал до пускового пристрою з ідентифікатором програми та набором властивостей. Ідентифікатор програми - це ім'я файлу .desktop, який зазвичай зберігається у /usr/share/applications
:
//create the signal
QDBusMessage signal = QDBusMessage::createSignal("/",
"com.canonical.Unity.LauncherEntry", "Update");
//set the application ID
signal << "application://firefox.desktop";
//set the properties
QVariantMap properties;
...
signal << properties;
//send the signal
QDBusConnection::sessionBus().send(signal);
Лічильник
Щоб встановити лічильник, вам потрібно встановити властивості таким чином, щоб рахунок було видно і надати йому потрібне ціле значення:
qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value
Індикатор виконання
Щоб встановити смугу прогресу, вам потрібно буде встановити властивості таким чином, щоб прогрес був видимим і надавав йому бажане подвійне значення:
double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value
Швидкий список
Швидкий список можна встановити за допомогою бібліотеки Qt dbusmenu. Вам потрібно буде включити заголовок:
#include <dbusmenuexporter.h>
Швидкий список створюється як QMenu
меню в Qt. Це меню 'експортується' через dbusmenu за допомогою DBusMenuExporter
об'єкта. Експортуючи, ви надаєте цьому об'єкту унікальний шлях, а потім посилаєтесь на цей шлях, щоб повідомити пункт запуску, яке меню відображати як список швидкого переліку.
У основне оголошення класу вікна додайте такі змінні екземпляри:
QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;
Потім у функції конструктора:
quicklist = new QMenu(this);
//exports the menu over dbus using the object: /com/me/myapp/quicklist
quicklist_exporter = new DBusMenuExporter("/com/me/myapp/quicklist", quicklist);
Щоб додати елементи до меню, використовуйте метод [addAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qmenu.html#addAction), щоб додати [QAction] (http: / /qt-project.org/doc/qt-5.0/qtwidgets/qaction.html) об’єктів.
Для встановлення швидкого списку піктограми запуску встановіть властивість сигналу "швидкого списку":
properties["quicklist"] = "/com/me/myapp/quicklist";
Налаштування файлу проекту
Вам потрібно буде налаштувати файл .pro для додавання Dbus підтримки: QT += dbus
. Для побудови з підтримкою швидкого списку вам потрібно буде встановити бібліотеки розвитку ( libdbusmenu*dev
) dbusmenu-qt . Потім ви можете додати наступне до файлу проекту, щоб включити бібліотеку dbusmenu:
#import the dbusmenu-qt library for quicklists
greaterThan(QT_MAJOR_VERSION, 4) {
INCLUDEPATH += /usr/include/dbusmenu-qt5/
LIBS += -ldbusmenu-qt5
} else {
INCLUDEPATH += /usr/include/dbusmenu-qt/
LIBS += -ldbusmenu-qt
}
Приклад застосування
Щоб побачити повний приклад з використанням усіх функцій запуску з Qt, подивіться цей проект Github .