Использование QtimerEvent в QGraphicsScene - PullRequest
0 голосов
/ 02 сентября 2011

timerEvent, который является членом класса QGLWidget, должен запускаться при вызове функции mousemove.Я думал, что смогу сделать это так:

void GLWidget::timerEvent(QTimerEvent *e)
{
    if (e->timerId()==1 && refresh==true)
    {
        refresh = !refresh;
        swapBuffers();
        update();
    }
}

Это выглядит так:

void OpenGLScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    int mousex = event->scenePos().x();
    int mousey = event->scenePos().y();

    if ((test->modus==2) && (test->move1 != -1))
    {
        p_list[test->move1].x=mousex-(1220);
        p_list[test->move1].y=mousey-( 610);
        test->refresh = !(test->refresh);
        test->timerEvent(???);
        update();
    }
}

Но почему-то я не знаю, что ставить там, где находятся знаки вопроса.Я пробовал несколько вещей.Это не работает.Я хочу установить timerId () = 1.Спасибо за вашу помощь ...

1 Ответ

0 голосов
/ 02 сентября 2011

почему бы вам не назвать свое собственное событие как:

void OpenGLScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    // ...
    if ((test->modus==2) && (test->move1 != -1))
    {
        // ...
        test->refresh = !(test->refresh);

        //test->timerEvent(???); replaced by :
        test->manuelUpdate(); // your own function
        //...
    }
}

и в вашем GLWidget:

void GLWidget::manuelUpdate()
{
    if (refresh==true)
    {
        refresh = !refresh;
        swapBuffers();
        update();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...