Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QT-DBUS装载文件系统_C++_Qt_Filesystems_Mount_Dbus - Fatal编程技术网

C++ QT-DBUS装载文件系统

C++ QT-DBUS装载文件系统,c++,qt,filesystems,mount,dbus,C++,Qt,Filesystems,Mount,Dbus,我想使用QT和DBUS挂载一个文件系统。我使用以下小片段订阅了信号“DeviceAdded”: void DBusWatcher::deviceAdded(const QDBusObjectPath &o) { QDBusMessage call = QDBusMessage::createMethodCall("org.freedesktop.UDisks", o.path(), "org.freedesktop.DBus.Properties", "GetAll");

我想使用QT和DBUS挂载一个文件系统。我使用以下小片段订阅了信号“DeviceAdded”:

 void DBusWatcher::deviceAdded(const QDBusObjectPath &o) {
    QDBusMessage call = QDBusMessage::createMethodCall("org.freedesktop.UDisks", o.path(), "org.freedesktop.DBus.Properties", "GetAll");

    QList<QVariant> args;
    args.append("org.freedesktop.UDisks.Device");
    call.setArguments(args);

    QDBusPendingReply<QVariantMap> reply = DBusConnection::systemBus().asyncCall(call);
    reply.waitForFinished();

    QVariantMap map = reply.value();

    // ...
}

现在,我应该在QDBusConnection::systemBus()上使用什么操作:call、asyncCall、callWithCallback?什么必须作为第二个参数放入createMethodCall?什么都不管用!真是令人困惑

好吧,经过至少两天的努力,我终于成功了!我查看了
razerqt
源代码,我查看了
kdelibs
源代码,但不知怎的,他们所有的
dbus
东西都不起作用。下面是我非常满意的片段:

void DBusWatcher::deviceAdded(const QDBusObjectPath&o){
QDBusMessage call=QDBusMessage::createMethodCall(“org.freedesktop.UDisks”,o.path(),“org.freedesktop.DBus.Properties”,“GetAll”);
QList-args;
append(“org.freedesktop.UDisks.Device”);
call.setArguments(args);
QDBusPendingReply=QDBusConnection::systemBus().asyncCall(调用);
reply.waitForFinished();
QVariantMap=reply.value();
//现在用地图做你想做的;)
//您将找到所连接设备的所有可用信息
}
//指向systembus的类范围指针
//在类的构造函数中初始化
//并在析构函数中删除
dbus=新的QDBUS接口(
“org.freedesktop.UDisks”,
“这里是来自QDBusObjectPath.path()对象的路径”,
“org.freedesktop.UDisks.Device”,
QDBusConnection::systemBus(),
这
);
void DbusAction::mountFilesystem(){
如果(dbus->isValid()){
QList-args;
args
QDBusMessage call = QDBusMessage::createMethodCall("org.freedesktop.UDisks", "dont know what to put here!", "org.freedesktop.UDisks.Device", "FilesystemMount");