我在尝试实现一个类时遇到了问题。基本上,我希望在构造类时启动一个单热计时器,并将其连接到其中一个类插槽。目前,我的构造函数如下所示:
myclass::myclass(int time)
{
QTimer::singleShot(time, this, SLOT(myslot()));
}并在标题中产生错误。我已经发现我的类必须是一个Q_OBJECT,但这并没有修复这个错误。有什么想法吗?提前感谢!
发布于 2013-06-20 20:11:40
QGraphicsItem没有继承QObject,那么你应该修改我的类
// thanks to WoJo for pointing out the right inheritance order
class myclass : public QObject, public QGraphicsItem
//class myclass : public QGraphicsItem, public QObject
{ Q_OBJECT
...
public slots:
void myslot();
}根据我的经验,您需要删除build目录,以便在此之后强制执行干净的重新构建。
发布于 2013-06-20 19:53:43
您的类继承了QObject、QWidget或其他小部件吗?你在你的程序中包含<QTimer>了吗?
发布于 2013-06-20 19:59:15
变化
QTimer::singleShot(time, this, SLOT(myslot))); // this should give you a syntax error as well至
QTimer::singleShot(time, this, SLOT(myslot()));但是要注意,在一段时间后调用它自己的方法可能会带来很多麻烦。当您调用类对象某些函数且计时器结束并直接调用myslot()时,可能会出现竞争编码。
https://stackoverflow.com/questions/17212909
复制相似问题