Jadi, seumur hidup saya, saya tidak bisa menghubungkan objek saya ke bus sesi. Jadi, saya mencoba menghubungkan "wakeup" dari "my_obj" ke sinyal dBus "profileChanged". Tapi, walaupun saya yakin (via qbusviewer) sinyal ini dipancarkan, "wakeup" tidak akan berjalan. Berikut cuplikan kode saya:
const QString service = "org.kde.Solid.PowerManagement";
const QString path = "/org/kde/Solid/PowerManagement";
const QString interface = "org.kde.Solid.PowerManagement";
QDBusConnection bus = QDBusConnection::sessionBus();
if (!bus.isConnected())
{
qDebug() << "Can't connect to the D-Bus session bus.\n";
}
class my_wake_up_class : public QObject
{
Q_OBJECT
public slots:
void wakeup(QString); //Does not run!
};
my_wake_up_class my_obj;
bool conn = bus.connect(service, path, interface, "profileChanged", &my_obj, SLOT(wakeup(QString)));
if (!conn) qDebug() << "not connected";
qDBus menunjukkan bahwa "profileChanged" memiliki bentuk "void (QString)" dan saya tidak mendapatkan kesalahan atau peringatan apa pun. Berikut adalah keluaran qdbus untuk sinyal tersebut:
signal void org.kde.Solid.PowerManagement.profileChanged(QString)
Jadi, menurutku ini akan berhasil. Saya yakin saya melewatkan beberapa detail kecil yang terkubur jauh di dalam beberapa dokumentasi. Adakah yang tahu di mana kesalahan saya?