Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: DenKor29 от Апрель 03, 2015, 08:44



Название: Отправка сообщений мыши для объекта QWebView
Отправлено: DenKor29 от Апрель 03, 2015, 08:44
Есть следующий код для эмуляции нажатии мыши для объекта QWebView (view).

Проблема в том, что если задавать координаты напрямую - virtualClick(780,190);
то на разных разрешениях экраны эти координаты начинают плыть.

Два вопроса ?

1. Можно ли как-то корректировать точные координаты в зависимости от разрешения экрана и маштабирования окна.
Может вобще его можно отменить ?
2. Можно ли объекты flash посылать сигналы мыши напрямую в обход QWebView ?

В текущем коде я пытаюсь бороться с этим с попощью констант x_delta, y_delta. Но как-то криво проходит  ;)
Код:
void MainWindow::virtualClick(int x,int y)
{


    QCursor pos;
    QTime time;
    QPoint point(x,y);


    QRect frm =   view->geometry();

    int w=frm.width();


   //hak

    y_delta = 0;

    switch (w)
    {
    case 1440:
        x_delta = 0;
        break;
    case 1368:
        x_delta = -50;
    case 1280:
        x_delta = -50;
    case 800:
        x_delta = -50;
    default:
        break;
    }

    point = view->mapToGlobal(point);

    view->setFocus();

    if (cursor) pos.setPos(point.x()+x_delta,point.y()+y_delta);





    QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(x+x_delta,y+y_delta), Qt::LeftButton,
                           Qt::LeftButton, Qt::NoModifier);
    QCoreApplication::sendEvent(view, &pressEvent);


    QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(x+x_delta,y+y_delta), Qt::LeftButton,
                           Qt::LeftButton, Qt::NoModifier);
    QCoreApplication::sendEvent(view, &releaseEvent);

}



Название: Re: Отправка сообщений мыши для объекта QWebView
Отправлено: Bepec от Апрель 03, 2015, 12:10
Тут зависимости конечно есть, но точность  получится никакая, к тому же при изменениях сайта формулу перерасчитывать придётся.
Я пытался что то сделать на Qt и C++, но не получилось.

Самый лучший вариант оказался Python и ghost. Там имеется всё для автоматизации.

PS эмуляция мыши в общем фигня, нужно сразу дёргать объекты.


Название: Re: Отправка сообщений мыши для объекта QWebView
Отправлено: DenKor29 от Апрель 03, 2015, 13:49
Тут зависимости конечно есть, но точность  получится никакая, к тому же при изменениях сайта формулу перерасчитывать придётся.
Я пытался что то сделать на Qt и C++, но не получилось.

Самый лучший вариант оказался Python и ghost. Там имеется всё для автоматизации.

PS эмуляция мыши в общем фигня, нужно сразу дёргать объекты.

Допустим разберу я код фрейма и найду свой объект flash.
Но как ему послать сиграл от мыши ?





Название: Re: Отправка сообщений мыши для объекта QWebView
Отправлено: Bepec от Апрель 03, 2015, 14:25
ghost позволяет вроде бы послать клик. Смотрите документацию.


Название: Re: Отправка сообщений мыши для объекта QWebView
Отправлено: DenKor29 от Апрель 06, 2015, 08:04
ghost позволяет вроде бы послать клик. Смотрите документацию.

Мне нужно это сделать только через компилятор Minigw и qt.