一个小例子,有需要就看看
//.pro
QT += core gui dbus
TARGET = mdbussend
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
~
//main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
class MainWindow: public QWidget
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void sendPush(void);
void sendMessage(const QString &msg);
private:
};
#endif
//mainwindow.cpp
#include <QPushButton>
#include <QtDBus/QDBusConnection>
#include <QtDBus/QDBusMessage>
#include <QtDBus/QDBusInterface>
#define U_PATH "/wt/path"
#define U_INTERFACE "test.dbus"
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent)
{
setGeometry(0,0, 300, 300);
QPushButton *sendPushButton = new QPushButton(this);
sendPushButton->setText("send mes");
QObject::connect(sendPushButton, SIGNAL(clicked()), this, SLOT(sendPush()));
bool ok = QDBusConnection::sessionBus().connect(QString(), QString(),
U_INTERFACE,
"sendMsg", this, SLOT(sendMessage(QString)));
if (!ok)
qDebug("error can't connect to bus");
}
MainWindow::~MainWindow()
{
}
void MainWindow::sendPush(void)
{
QDBusMessage msg = QDBusMessage::createSignal(U_PATH, U_INTERFACE, "sendMsg");
msg <<"sendmsg ok";
bool issucc = QDBusConnection::sessionBus().send(msg);
if (!issucc)
qDebug("cannot send.......");
}
void MainWindow::sendMessage(const QString& msg)
{
qDebug("msg: %s", msg.toLocal8Bit().constData());
}