Qt一步一步算法动画演示

时间:2017-05-01 16:43:30

标签: c++ qt

我正在创建算法的演示。 我面临的问题是如何逐步动画算法,所以在超时或点击时算法会执行一步并将其显示在屏幕上。我希望下面的算法走一步(如当时在线上指示,所以每当调用该函数时,它只执行算法的一步。最接近这个想法就像调试算法一样 - 在每次通话时它会转到下一个"断点" (代码中的第一步,第二步,第三步)

void MainWindow::animationStep()
{
    // this as a whole goes all in one step - for now
    QVector<QVector3D> mp = myView->points; 
    QVector2D p0(mp.back()); // in step one - highlight this point 
    mp.pop_back();
    mp.pop_back();
    while(!mp.empty()){
        QVector2D pTemp(mp.back()); // in step two - highlight this point
        mp.pop_back();
        // in step three - draw this line
        QGraphicsLineItem *line = myView->scene->addLine(p0.x(), p0.y(), pTemp.x(), pTemp.y(), QPen(Qt::blue, 3)); 
        line->setZValue(-1);
        // next step - continue
    }
}

我有一个想法是将每个部分放在不同的函数中并根据全局计数器执行它们,但这似乎是不必要的复杂。有没有简单的方法呢?

1 个答案:

答案 0 :(得分:0)

我看到了两种方法来完成运行代码的动画显示。

第一个选项是将代码分开,以便在回拨时逐步操作。这将非常难看。您可以使用某种协同程序包使其看起来不那么难看。

第二个选项是不实际运行算法并一起显示。在这种情况下,运行算法时,您将记录基于时间的数据结构中的所有步骤,然后使用单独的代码将该数据结构回放到显示器。这样做的缺点是现在显示代码在运行时无法影响算法。