我正在阅读基于C++的QT项目的this example。继承自 QGraphicsItem 的类(在mouse.h文件中)定义了一个名为 Mouse 的类,该类具有一个声明如下的方法:

protected:
    void advance(int step) Q_DECL_OVERRIDE;

在文件mouse.cpp中重新实现了 Advance 方法,并按如下所示启动:
void Mouse::advance(int step)
{
    if (!step)
        return;
... and some more code ...

这是变量步骤在整个程序中唯一提到过的三个位置(我在每个源文件中进行了搜索)。从main.cpp文件中的 QTimer -instance调用方法 advance ,但是(奇怪的是)没有参数。但是,在 Advance 方法的开始处立即使用断点进行调试显示,步骤步骤在值0和1之间循环。

有谁知道那是为什么?链接中的教程只是说明了这样做,但没有说明如何设置或更改其值。

最佳答案

请更仔细地阅读文档。 advance()调用的QTimer方法是QGraphicsScene的成员。 QGraphicsScene::advance()调用scene in two phases中所有QGraphicsItemadvance( int phase ),第一阶段通知项将要更改(当参数为0时),第二阶段通知实际更改(参数为1)。

关于c++ - QT中 “Colliding Mice”中的可变步骤如何更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30336999/

10-12 02:10