Şu anda Qt C ++ 'dan başlatıcı işlevselliğine erişmek için belirli bir kütüphane yok. Bir libunity kütüphanesi var, ancak bu büyük ölçüde glib yönelimli, bu yüzden Qt için nispeten uygun değil. Diğer cevapta belirtildiği gibi, başlatıcı ile entegre olmanın en uygun yolu düşük seviyeli dbus API'yi kullanmaktır .
Başlatıcı ile nasıl entegre edeceğinizin temel konsepti, başlatıcıya bir uygulama kimliği ve bir dizi özellik ile bir sinyal göndermenizdir. Uygulama kimliği, normalde depolanan .desktop dosyasının dosya adıdır /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);
sayaç
Sayacı ayarlamak için özellikleri sayım görünür olacak şekilde ayarlamanız ve istenen tamsayı değerini vermeniz gerekir:
qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value
İlerleme çubuğu
İlerleme çubuğunu ayarlamak için, özellikleri ilerleme durumu görünür olacak şekilde ayarlamanız ve ona istenen çift değeri vermeniz gerekir:
double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value
Hızlı liste
Hızlı liste dbusmenu Qt kütüphanesi kullanılarak ayarlanabilir. Başlık dosyasını eklemeniz gerekir:
#include <dbusmenuexporter.h>
Hızlı liste QMenu
Qt. Bu menü, bir DBusMenuExporter
nesne kullanılarak dbusmenu üzerinden 'dışa aktarılır' . Dışa aktarırken, bu nesneye benzersiz bir yol verir ve ardından başlatıcı öğesine hangi listenin hızlı liste olarak görüntüleneceğini söylemek için bu yolu referans alırsınız.
Ana pencere sınıfı bildiriminize aşağıdaki örnek değişkenleri ekleyin:
QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;
Ardından, yapıcı işlevinde:
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);
Menüye öğe eklemek için, menünün [addAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qmenu.html#addAction) yöntemini kullanarak [QAction] (http: / /qt-project.org/doc/qt-5.0/qtwidgets/qaction.html) nesneler.
Başlatıcı simgesinin hızlı listesini ayarlamak için sinyalin 'hızlı liste' özelliğini ayarlayın:
properties["quicklist"] = "/com/me/myapp/quicklist";
Proje Dosyasını Yapılandırma
Sen dbus desteği eklemek için .pro dosyayı yapılandırmanız gerekir: QT += dbus
. Hızlı liste desteğiyle derlemek için dbusmenu-qt geliştirme kitaplıklarının ( libdbusmenu*dev
) kurulu olması gerekir. Daha sonra dbusmenu kütüphanesini dahil etmek için proje dosyasına aşağıdakileri ekleyebilirsiniz:
#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
}
Örnek Uygulama
Qt'nin tüm başlatıcı işlevlerini kullanarak tam bir örnek görmek için bu Github projesine bakın .