• 8370阅读
  • 1回复

[共享]QtDbus 信号的发送与监听  signal [复制链接]

上一主题 下一主题
离线hu851217
 

只看楼主 倒序阅读 楼主  发表于: 2011-07-07
一个小例子,有需要就看看
//.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());
}








离线无心徘徊

只看该作者 1楼 发表于: 2012-12-24
按照 这种用法, 消息发送200多次后, 就溢出了。 这个msg变量, 如何清空呢??
技术是知识的积累,艺术是知识的熟练!
快速回复
限100 字节
 
上一个 下一个