我正在阅读基于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中所有QGraphicsItem
的advance( int phase )
,第一阶段通知项将要更改(当参数为0时),第二阶段通知实际更改(参数为1)。
关于c++ - QT中 “Colliding Mice”中的可变步骤如何更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30336999/