Hiện tại không có thư viện cụ thể để truy cập chức năng launcher từ Qt C ++. Có một thư viện miễn dịch nhưng điều này được định hướng rất nhiều vì vậy tương đối không phù hợp với Qt. Như đã đề cập trong câu trả lời khác, cách thuận tiện nhất để tích hợp với trình khởi chạy là sử dụng API dbus cấp thấp .
Khái niệm cơ bản về cách tích hợp với trình khởi chạy là bạn gửi tín hiệu đến trình khởi chạy với ID ứng dụng và một bộ thuộc tính. ID ứng dụng là tên tệp của tệp .desktop, thường được lưu trữ trong /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);
Quầy tính tiền
Để đặt bộ đếm, bạn sẽ cần đặt các thuộc tính sao cho số đếm được hiển thị và cung cấp cho nó giá trị nguyên mong muốn:
qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value
Thanh tiến trình
Để đặt thanh tiến trình, bạn sẽ cần đặt các thuộc tính sao cho tiến trình được hiển thị và cung cấp cho nó giá trị gấp đôi mong muốn:
double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value
Danh sách nhanh chóng
Danh sách nhanh có thể được thiết lập bằng cách sử dụng thư viện dbusmenu Qt. Bạn sẽ cần bao gồm tệp tiêu đề:
#include <dbusmenuexporter.h>
Danh sách nhanh được tạo như một QMenu
menu trong Qt. Menu này được 'xuất' qua dbusmenu bằng cách sử dụng một DBusMenuExporter
đối tượng. Khi xuất, bạn cung cấp cho đối tượng này một đường dẫn duy nhất và sau đó tham chiếu đường dẫn đó để báo cho mục trình khởi chạy trình đơn nào sẽ hiển thị dưới dạng danh sách nhanh.
Trong khai báo lớp cửa sổ chính của bạn, thêm các biến đối tượng sau:
QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;
Sau đó, trong hàm constructor:
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);
Để thêm các mục vào menu, sử dụng phương thức [addAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qmenu.html#addAction) của menu để thêm [QAction] (http: / /qt-project.org/doc/qt-5.0/qtwidgets/qaction.html) các đối tượng.
Để đặt danh sách nhanh của biểu tượng trình khởi chạy, hãy đặt thuộc tính 'danh sách nhanh' của tín hiệu:
properties["quicklist"] = "/com/me/myapp/quicklist";
Cấu hình tệp dự án
Bạn sẽ cần định cấu hình tệp .pro để thêm hỗ trợ dbus : QT += dbus
. Để xây dựng với sự hỗ trợ danh sách nhanh, bạn sẽ cần phải libdbusmenu*dev
cài đặt các thư viện phát triển dbusmenu-qt ( ). Sau đó, bạn có thể thêm các mục sau vào tệp dự án để bao gồm thư viện 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
}
Ứng dụng ví dụ
Để xem ví dụ đầy đủ bằng cách sử dụng tất cả các chức năng của trình khởi chạy từ Qt, hãy xem dự án Github này .