在 QGraphicsScene 中使用 QtimerEvent

发布于 2024-12-02 10:20:15 字数 810 浏览 2 评论 0原文

定时器事件是 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。 感谢您的帮助...

The timerEvent, which is a member of a QGLWidget class shall be triggered when the mousemove-function is called. I thought I could do it like this:

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

It looks like this:

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();
    }
}

But somehow I dont know what to put into where the questions marks are. I have tried several things. It is not working. I want to set timerId()=1.
Thanks for your help...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笔芯 2024-12-09 10:20:15

你为什么不调用你自己的事件,如:

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();
    }
}

why don't you call your own event like :

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
        //...
    }
}

and in your GLWidget :

void GLWidget::manuelUpdate()
{
    if (refresh==true)
    {
        refresh = !refresh;
        swapBuffers();
        update();
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文