QDbus, управление прогой из терминала |
Здравствуйте, гость ( Вход | Регистрация )
QDbus, управление прогой из терминала |
malcer |
16.6.2011, 0:51
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 16.6.2011 Пользователь №: 2747 Спасибо сказали: 0 раз(а) Репутация: 0 |
здравствуйте
почемуто, запуская этот метод через терминал,используя QDbus c qDebug нет проблем, а эдит воопще не реагирует В замешательстве подскажыте в чем проблема? |
|
|
RazrFalcon |
16.6.2011, 2:06
Сообщение
#2
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
А можно побольше инфы?
Какая ОС, ДЕ. Саму команду консоли. Ну и весь пример, что бы у себя потестить. |
|
|
malcer |
16.6.2011, 10:28
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 16.6.2011 Пользователь №: 2747 Спасибо сказали: 0 раз(а) Репутация: 0 |
OC ubuntu , Qt 4.6.2
Мой код: [codebox] --------------------------------------------------- main.cpp --------------------------------------------------- #include <QtGui/QApplication> #include <QtDBus/QDBusConnection> #include "example.h" #include "adaptor.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); /* connection to the service session bus */ example *tmp = new example(); new Adaptor(tmp); QDBusConnection connection = QDBusConnection::sessionBus(); connection.registerObject("/example", tmp); connection.registerService("com.trolltech.Example"); example w; w.show(); return a.exec(); } --------------------------------------------------- example.h --------------------------------------------------- #ifndef EXAMPLE_H #define EXAMPLE_H #include <QMainWindow> #include <QtDBus/QtDBus> #include <QtCore/QDebug> #include <QString> #include <QFile> namespace Ui { class example; } class example : public QMainWindow { Q_OBJECT public: example(QWidget *parent = 0); ~example(); QString str; protected: void changeEvent(QEvent *e); private: Ui::example *ui; public Q_SLOTS: void run(); void on_pushButton_clicked(); }; #endif // EXAMPLE_H --------------------------------------------------- example.cpp --------------------------------------------------- #include "example.h" #include "ui_example.h" example::example(QWidget *parent) : QMainWindow(parent), ui(new Ui::example) { ui->setupUi(this); } example::~example() { //delete ui; } void example::changeEvent(QEvent *e) { QMainWindow::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void example::run() { qDebug() << "qdbus"; ui->lineEdit->setText("qdbus"); } void example::on_pushButton_clicked() { qDebug() << "button"; ui->lineEdit->setText("button"); } --------------------------------------------------- adaptor.h --------------------------------------------------- #include <QtDBus/QtDBus> class Adaptor: public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "com.trolltech.Example") Q_CLASSINFO("D-Bus Introspection", "" " <interface name=\"com.trolltech.Example\" >\n" " <method name=\"run\" />\n" " </method>\n" " </interface>\n" "") public: Adaptor(QObject *parent); virtual ~Adaptor(); public: // PROPERTIES public Q_SLOTS: // METHODS void run(); }; --------------------------------------------------- adaptor.cpp --------------------------------------------------- #include "adaptor.h" #include "example.h" #include <QtCore/QMetaObject> Adaptor::Adaptor(QObject *parent) : QDBusAbstractAdaptor(parent) { // constructor setAutoRelaySignals(true); } Adaptor::~Adaptor() { // destructor } void Adaptor::run() { QMetaObject::invokeMethod(parent(), "run"); } [/codebox] Из терминала ввожу " qdbus com.trolltech.Example /example run " [codebox] adaagadfg [/codebox] [quote name='malcer' date='16.6.2011, 10:26' post='50792'] OC ubuntu , Qt 4.6.2 Мой код: [codebox] --------------------------------------------------- main.cpp --------------------------------------------------- #include <QtGui/QApplication> #include <QtDBus/QDBusConnection> #include "example.h" #include "adaptor.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); /* connection to the service session bus */ example *tmp = new example(); new Adaptor(tmp); QDBusConnection connection = QDBusConnection::sessionBus(); connection.registerObject("/example", tmp); connection.registerService("com.trolltech.Example"); example w; w.show(); return a.exec(); } --------------------------------------------------- example.h --------------------------------------------------- #ifndef EXAMPLE_H #define EXAMPLE_H #include <QMainWindow> #include <QtDBus/QtDBus> #include <QtCore/QDebug> #include <QString> #include <QFile> namespace Ui { class example; } class example : public QMainWindow { Q_OBJECT public: example(QWidget *parent = 0); ~example(); QString str; protected: void changeEvent(QEvent *e); private: Ui::example *ui; public Q_SLOTS: void run(); void on_pushButton_clicked(); }; #endif // EXAMPLE_H --------------------------------------------------- example.cpp --------------------------------------------------- #include "example.h" #include "ui_example.h" example::example(QWidget *parent) : QMainWindow(parent), ui(new Ui::example) { ui->setupUi(this); } example::~example() { //delete ui; } void example::changeEvent(QEvent *e) { QMainWindow::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void example::run() { qDebug() << "qdbus"; ui->lineEdit->setText("qdbus"); } void example::on_pushButton_clicked() { qDebug() << "button"; ui->lineEdit->setText("button"); } --------------------------------------------------- adaptor.h --------------------------------------------------- #include <QtDBus/QtDBus> class Adaptor: public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "com.trolltech.Example") Q_CLASSINFO("D-Bus Introspection", "" " <interface name=\"com.trolltech.Example\" >\n" " <method name=\"run\" />\n" " </method>\n" " </interface>\n" "") public: Adaptor(QObject *parent); virtual ~Adaptor(); public: // PROPERTIES public Q_SLOTS: // METHODS void run(); }; --------------------------------------------------- adaptor.cpp --------------------------------------------------- #include "adaptor.h" #include "example.h" #include <QtCore/QMetaObject> Adaptor::Adaptor(QObject *parent) : QDBusAbstractAdaptor(parent) { // constructor setAutoRelaySignals(true); } Adaptor::~Adaptor() { // destructor } void Adaptor::run() { QMetaObject::invokeMethod(parent(), "run"); } [/codebox] Из терминала ввожу " qdbus com.trolltech.Example /example run " |
|
|
Litkevich Yuriy |
16.6.2011, 10:55
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
RazrFalcon |
16.6.2011, 11:03
Сообщение
#5
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Можете, пожалуйста, в архиве выложить?
Я задолбаюсь копипастить. |
|
|
malcer |
16.6.2011, 14:17
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 16.6.2011 Пользователь №: 2747 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
RazrFalcon |
16.6.2011, 21:05
Сообщение
#7
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Тоже не пашет. Бага.
|
|
|
Текстовая версия | Сейчас: 2.12.2024, 4:03 |