小编ben*_*u_a的帖子

如何在不阻塞主线程的情况下使用Qt-Dbus绑定

我的目标是使用Qt的DBus绑定创建一个库.

我尝试创建一个Qt应用程序而不在主线程中启动QEventLoop(由QCoreApplication类提供).

这是一个简约的应用程序示例,使用QT-4.6.2版本正常工作但使用QT-4.8或更高版本阻止内省.

DBusHandler.hpp

#pragma once
#include <iostream>
#include <QtCore/QThread>
#include <QtCore/QtCore>
#include <QtDBus/QDBusInterface>

class DBusHandler : public QThread
{
    Q_OBJECT;

private:     
    void run(void)
    {
        QDBusConnection connection = QDBusConnection::sessionBus();

        connection.registerService("my.qdbus.example");
        connection.registerObject("/", this, QDBusConnection::ExportAllSlots);
        exec();
    }

public:
    DBusHandler(void) {}
    virtual ~DBusHandler(void) {}

    void stop(void)
    {
        QDBusConnection connection = QDBusConnection::sessionBus();

        connection.unregisterObject("/");
        connection.unregisterService("my.qdbus.example");
        connection.disconnectFromBus(connection.name());
        QThread::quit();
    }

public slots:
    void remoteCall(QByteArray message)
    {
        std::cout << "Message size: " << message.size() << std::endl;
    }
};
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include "DBusHandler.hpp"

int …
Run Code Online (Sandbox Code Playgroud)

c++ qt dbus introspection qeventloop

9
推荐指数
1
解决办法
2605
查看次数

标签 统计

c++ ×1

dbus ×1

introspection ×1

qeventloop ×1

qt ×1