首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:没有匹配的函数用于调用'QTimer::singleShot‘

错误:没有匹配的函数用于调用'QTimer::singleShot‘
EN

Stack Overflow用户
提问于 2013-06-20 19:51:07
回答 4查看 2.5K关注 0票数 3

我在尝试实现一个类时遇到了问题。基本上,我希望在构造类时启动一个单热计时器,并将其连接到其中一个类插槽。目前,我的构造函数如下所示:

代码语言:javascript
运行
复制
myclass::myclass(int time)
{
    QTimer::singleShot(time, this, SLOT(myslot()));
}

并在标题中产生错误。我已经发现我的类必须是一个Q_OBJECT,但这并没有修复这个错误。有什么想法吗?提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-20 20:11:40

QGraphicsItem没有继承QObject,那么你应该修改我的类

代码语言:javascript
运行
复制
// 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目录,以便在此之后强制执行干净的重新构建。

票数 2
EN

Stack Overflow用户

发布于 2013-06-20 19:53:43

您的类继承了QObject、QWidget或其他小部件吗?你在你的程序中包含<QTimer>了吗?

票数 1
EN

Stack Overflow用户

发布于 2013-06-20 19:59:15

变化

代码语言:javascript
运行
复制
QTimer::singleShot(time, this, SLOT(myslot))); // this should give you a syntax error as well

代码语言:javascript
运行
复制
QTimer::singleShot(time, this, SLOT(myslot()));

但是要注意,在一段时间后调用它自己的方法可能会带来很多麻烦。当您调用类对象某些函数且计时器结束并直接调用myslot()时,可能会出现竞争编码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17212909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档