LINUX.ORG.RU

qt send wheel event

 , wheel event


0

2

Привет всем.

Есть такой код (qt4):

myT.h:

http://pastebin.com/gSLvKTVx

main.cpp:

http://pastebin.com/736MaBCX

Пытаюсь разобраться, как отправить в виджет событие прокрутки колёсика мыши.

При нажатии PushButton выполняется только обработчик myT::event(QEvent *e), но не myT::wheelEvent(QWheelEvent *e).

Естественно, когда кручу колёсик в фокусе myT, wheelEvent отрабатывает на ура. Куда копать?

★★★★★

написать фильтр событий. и там уже ловить прокрутку колесика. не вывезешь загуглить, стучись на почту. в живую покажу по скайпу.

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

Желательно обойтись без вмешательства в виджеты и прочее.

Мне это нужно, чтобы понять, что творится внутри (никак не составлю в голове картину).

Всё это нужно вообще вот для чего.

Есть embedded сборка Qt3, приложение на нём, которое будут просматривать по VNC.

Собсно, всё работает, кроме этого колёсика мыши.

false ★★★★★
() автор топика
Ответ на: комментарий от MikeDM

И чем это мне поможет? Ну поймаю я этот event, и опять же, мне надо будет его отправить, а отправка работает не так, как ожидалось.

false ★★★★★
() автор топика
Ответ на: комментарий от false

прости балбеса. попутал обработку с отправкой. пора отдыхать уже =)

MikeDM ★★★★★
()
Ответ на: комментарий от false

Естественно, когда кручу колёсик в фокусе myT, wheelEvent отрабатывает на ура. Куда копать?

надо фокус тоже видимо перемещать на виджет.

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM
        qDebug() << qApp->focusWidget();
        this->setFocus();
        qDebug() << qApp->focusWidget();
        qApp->sendEvent(this,&e);
        qDebug() << qApp->focusWidget();
        qApp->processEvents();
        qDebug() << qApp->focusWidget();
void myT::v() 
QPushButton(0x7fff39164f50) 
myT(0x7fff39164f20) 
-120 
myT(0x7fff39164f20) 
myT(0x7fff39164f20)
false ★★★★★
() автор топика
Ответ на: комментарий от false

Зато вот этот код работает, правда только с WebView

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include <QApplication>
#include <QDebug>
#include <QWebView>
#include <QKeyEvent>
#include <QWheelEvent>

int main( int argc, char *argv[] )
{
    QApplication app( argc, argv );
    QWebView webview;
    webview.setUrl( QUrl("http://www.kde.org") );
    webview.show();

    app.processEvents();

    for (int i = 0; i < 1000 ; ++i ) {
        qDebug() << i;
        //QKeyEvent event(QEvent::KeyRelease, Qt::Key_Down, Qt::NoModifier );
        QWheelEvent event( QPoint(20,20), 40, Qt::NoButton, Qt::NoModifier );
        QCoreApplication::sendEvent(webview.page()->view(), &event);
        app.processEvents();
        sleep( 1 );
    }
 
    return app.exec();
}
false ★★★★★
() автор топика
Ответ на: комментарий от false

чую где то подвох. но не могу понять где. на досуге покумекаю.

MikeDM ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.