ขณะนี้ไม่มีไลบรารีเฉพาะสำหรับการเข้าถึงฟังก์ชันตัวเรียกใช้งานจาก Qt C ++ มีไลบรารีของ libunity แต่นี่เป็น glib ที่เน้นหนักดังนั้นจึงไม่เหมาะกับ Qt ตามที่ระบุไว้ในคำตอบอื่น ๆ วิธีที่สะดวกที่สุดในการทำงานร่วมกับปล่อยคือการใช้ในระดับต่ำ dbus API
แนวคิดพื้นฐานของวิธีรวมเข้ากับตัวเรียกใช้งานคือคุณส่งสัญญาณไปยังตัวเรียกใช้พร้อมกับ ID แอปพลิเคชันและชุดของคุณสมบัติ ID แอปพลิเคชันคือชื่อไฟล์ของไฟล์. 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
Quicklist
รายการด่วนสามารถตั้งค่าได้โดยใช้ไลบรารี dbusmenu Qt คุณจะต้องรวมไฟล์ส่วนหัว:
#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 จะเพิ่มการสนับสนุน QT += dbus
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นี้