Название: послать данные вместе с QEvent Отправлено: QCasper от Август 17, 2006, 09:49 можно ли как-то вместе с отправкой события например sendEvent или postEvent послать еще и какие-то значимые данные, например строку?
Название: послать данные вместе с QEvent Отправлено: bigirbis от Август 17, 2006, 09:54 Пронаследуйся от QEvent, а дальше - все что твоей душе угодно. Единственное, ловить придется через eventFilter. Либо извратиться и пронаследоваться от какого-нибудь готового Event.
Название: послать данные вместе с QEvent Отправлено: QCasper от Август 17, 2006, 09:56 Цитата: "bigirbis" Пронаследуйся от QEvent, а дальше - все что твоей душе угодно. Единственное, ловить придется через eventFilter. Либо извратиться и пронаследоваться от какого-нибудь готового Event. я не совсем понимаю, кого именно наследовать от QEvent, и что потом куда посылать, можно маленький примерчик? Название: послать данные вместе с QEvent Отправлено: bigirbis от Август 17, 2006, 10:10 Код: class MyEvent : public QEvent Код:
Код:
Название: послать данные вместе с QEvent Отправлено: noosooth от Август 17, 2006, 13:26 Цитата: "QCasper" я не совсем понимаю, кого именно наследовать от QEvent, и что потом куда посылать, можно маленький примерчик? Думаю можно ещё вот так ловить: Код: class MyEvent : public QEvent Там откуда посылаете: Код:
А в классе "Receiver" переопределить ф-цию void customEvent (QEvent* event ), которая по идее будет вызываться ежели классу пришел "custom event", т.е. event c типом больше чем QEvent::User. Код: void Receiver::customEvent(QEvent* e) Название: послать данные вместе с QEvent Отправлено: QCasper от Август 17, 2006, 14:49 я пытаюсь поймать в customEvent это событие.
на строку Код: CSISEvent *me = dynamic_cast<CSISEvent*>(e); компилятор выбрасывает warning C4541: 'dynamic_cast' used on polymorphic type 'QEvent' with /GR-; unpredictable behavior may result и когда дело доходит до выполнения этой строки я получаю access violation Название: послать данные вместе с QEvent Отправлено: noosooth от Август 17, 2006, 15:06 Цитата: "QCasper" компилятор выбрасывает warning C4541: 'dynamic_cast' used on polymorphic type 'QEvent' with /GR-; unpredictable behavior may result Дык либо включите RTTI (/GR). Либо разгребайте тип ручками. Что нибудь вроде: Код:
Кстати, Qt у Вас с поддержкой RTTI собран? А то я так сходу не могу сообразить какие проблемы могут возникнуть если библиотека собрана с поддержкой RTTI, а приложение ею пользующееся без оной. Название: послать данные вместе с QEvent Отправлено: QCasper от Август 17, 2006, 15:42 Цитата: "noosooth" Цитата: "QCasper" компилятор выбрасывает warning C4541: 'dynamic_cast' used on polymorphic type 'QEvent' with /GR-; unpredictable behavior may result Дык либо включите RTTI (/GR). Либо разгребайте тип ручками. Что нибудь вроде: Код:
Кстати, Qt у Вас с поддержкой RTTI собран? А то я так сходу не могу сообразить какие проблемы могут возникнуть если библиотека собрана с поддержкой RTTI, а приложение ею пользующееся без оной. я в итоге решил проблему в старом стиле: Код: CSISEvent *me = (CSISEvent*)e; а насчет RTTI ничего, честно говоря, сказать не могу Название: послать данные вместе с QEvent Отправлено: Steven_Orko от Август 17, 2006, 15:59 Цитата: "QCasper" я пытаюсь поймать в customEvent это событие. на строку Код: CSISEvent *me = dynamic_cast<CSISEvent*>(e); компилятор выбрасывает warning C4541: 'dynamic_cast' used on polymorphic type 'QEvent' with /GR-; unpredictable behavior may result и когда дело доходит до выполнения этой строки я получаю access violation Добавьте эту опцию, что говорит компилятор. Вообще для таких преобразований классов Qt и их потомков тролли придумали специальный макрос qobject_cast. Название: послать данные вместе с QEvent Отправлено: QCasper от Август 17, 2006, 16:21 Цитата: "Steven_Orko" Добавьте эту опцию, что говорит компилятор. Вообще для таких преобразований классов Qt и их потомков тролли придумали специальный макрос qobject_cast. я кстати об обжект касте тоже подумал, но сначала почему-то решил сделать в старом стиле, а в чем заключаются минусы того, что я так и оставлю? Название: послать данные вместе с QEvent Отправлено: noosooth от Август 17, 2006, 17:34 Цитата: "Steven_Orko" Вообще для таких преобразований классов Qt и их потомков тролли придумали специальный макрос qobject_cast. Вообще T qobject_cast ( QObject * object ) - это функция, а не макрос. А класс QEvent, насколько я понимаю, не есть потомок QObject. Соответственно qobject_cast() в данном случае не пройдет. |