Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QEvent в qt4


Автор: zaytsewa 26.3.2012, 10:13
Всем привет!
Не могу разобраться с QEvent в qt4.

В qt3 для того, чтобы отправить данные через событие надо было создать свой класс событие , наследованный от QEvent
задат ему тип QEvent::User+x и в методе customEvent получать данные через evt->data

теперь как я поняла справку - данные должны быть членом класса событие

вот мой код:
Код

const int InfoUpdateEvent = QEvent::User + 1;

class InfoEvent : public QEvent
{
public:
    explicit InfoEvent( QEvent::Type type, const QString& message ) : QEvent( type ), _message( message ) 
    {
    };

    const QString& message(){ return _message; };

    static int eventType;

private:
    QString _message;
};


получаем тип события:
Код

InfoEvent::eventType = QEvent::registerEventType( InfoUpdateEvent );


отправка события 
Код

QApplication::sendEvent( _infoReciever, new InfoEvent( ( QEvent::Type )InfoEvent::eventType, infoMessage ) );


получение события:
Код


void ConfigurationEditorWidget::customEvent ( QEvent * event )
{
    qDebug("!!!!customEvent!!!!!\n");
    if ( event->type() == InfoEvent::eventType )
    {
        InfoEvent* evt = reinterpret_cast<InfoEvent*>( event );
        if ( evt == 0 ) return;
            qDebug( "customEvent %s", evt->message().toLocal8Bit().constData() );
        //evt->message();
    }
    QObject::customEvent( event );
}


что я делаю не так? заранее спасибо)



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)