Russian Qt Forum
Ноябрь 26, 2024, 14:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: почему нельзя кастить QObject* к QDBusInterface*?  (Прочитано 6333 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Ноябрь 17, 2009, 22:35 »

с помощью qobject_cast:

Код
C++ (Qt)
QDBusInterface *i = qobject_cast<QDBusInterface *>(sender());

Цитировать
/usr/include/qt4/QtDBus/qdbusabstractinterface.h: In member function ‘void QDBusAbstractInterface::qt_check_for_QOBJECT_macro(const T&) const [with T = QDBusInterface]’:
/usr/include/qt4/QtCore/qobject.h:441:   instantiated from ‘T qobject_cast(QObject*) [with T = QDBusInterface*]’
dbus.cpp:151:   instantiated from here
/usr/include/qt4/QtDBus/qdbusabstractinterface.h:66: error: void value not ignored as it ought to be

 Непонимающий
Записан
MoPDoBoPoT
Гость
« Ответ #1 : Ноябрь 17, 2009, 22:56 »

В описании этого класса отсутствует макрос Q_OBJECT, может поэтому?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Ноябрь 17, 2009, 23:08 »

В описании этого класса отсутствует макрос Q_OBJECT, может поэтому?

Да, посмотрел, отсутствует. Что характерно, в QDBusAbstractInterface он есть. Не консистентно, и не документировано.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Ноябрь 17, 2009, 23:29 »

Попробуй static_cast.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
« Ответ #4 : Ноябрь 18, 2009, 00:08 »

с помощью qobject_cast:
Код
C++ (Qt)
QDBusInterface *i = qobject_cast<QDBusInterface *>(sender());
А какой сигнал ты обрабатываешь?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Ноябрь 18, 2009, 00:16 »

А какой сигнал ты обрабатываешь?

от dbus сервера на стороне клиента.
Записан
BRE
Гость
« Ответ #6 : Ноябрь 18, 2009, 00:24 »

А какой сигнал ты обрабатываешь?

от dbus сервера на стороне клиента.
Сигналы идут от QDBusConnection, а не от QDBusInterface.
bool QDBusConnection::connect ( const QString & service, const QString & path, const QString & interface, const QString & name, QObject * receiver, const char * slot )
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Ноябрь 18, 2009, 02:32 »

Сигналы идут от QDBusConnection, а не от QDBusInterface.
bool QDBusConnection::connect ( const QString & service, const QString & path, const QString & interface, const QString & name, QObject * receiver, const char * slot )

Здрасте Улыбающийся Коннектить можно и через QDBusInterface:

Код
C++ (Qt)
V::V()
{...
  QDBusInterface *i = new QDBusInterface("org.freedesktop.Hal",
                                           "/org/freedesktop/Hal/Manager",
                                           "org.freedesktop.Hal.Manager",
                                           QDBusConnection::systemBus(),
                                           this);
 
   connect(i, SIGNAL(DeviceAdded(const QString &)), this, SLOT(slotAdded()));
...
}
 
void V::slotAdded()
{
   qDebug() << sender()->inherits("QDBusInterface") << '/' << sender()->metaObject()->superClass()->className();
}
 

Вставляем флешку, видим в консоли "true / QDBusAbstractInterface"  Подмигивающий
« Последнее редактирование: Ноябрь 18, 2009, 02:44 от Alex Custov » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Ноябрь 18, 2009, 02:53 »

А откуда берется сигнал DeviceAdded?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Ноябрь 18, 2009, 04:35 »

А откуда берется сигнал DeviceAdded?

из dbus сервиса
Записан
BRE
Гость
« Ответ #10 : Ноябрь 18, 2009, 08:59 »

Здрасте Улыбающийся
Согласен, парюсь.  Улыбающийся

Так и приводи sender к QDBusAbstractInterface, ведь весь функционал в нем.
« Последнее редактирование: Ноябрь 18, 2009, 09:01 от BRE » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.103 секунд. Запросов: 22.