c++ - 尝试使用 QTimer 时出现 "No such slot"

标签 c++ qt

我有一个定义为 MyQGraphicsView::MyQGraphicsView(QWidget *parent) : QGraphicsView(parent)

的图形 View 包装器

在此范围内,我尝试使用 QTimers 设置定时 GUI 更新事件。

public slots:
    void colourGUI(std::vector<Item *> &items);

但是,当我尝试调用它时,出现错误。我是这样调用它的……

// timer...
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(colourGUI(items)));
timer->start(2000);

我收到以下错误:

Object::connect: No such slot MyQGraphicsView::colourGUI(items)

什么给了?我设置错了吗?

最佳答案

您的代码存在多个问题。首先,您尝试连接具有不同签名的信号和插槽。

你需要(1)

connect(timer, SIGNAL(timeout(std::vector<Item*>)), this, SLOT(colourGUI(std::vector<Item*>)));

代替:

connect(timer, SIGNAL(timeout()), this, SLOT(colourGUI(items)));

然而,这只有在 Qt 元对象系统知道如何编码此类型时才有效,但它不知道。您需要注册它或使用其中一个 Qt 集合,例如 QList。反正定时器也没有这样的信号。

(1) SLOT“描述”不得包含参数名称,并且必须包含参数类型以便能够正确编码它们。

关于c++ - 尝试使用 QTimer 时出现 "No such slot",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8446993/

相关文章:

c++ - 消除低效代码

c++ - 将字符串转换为非常量字符*

c++ - 图实现 : variable has initializer but incomplete type

c++ - 在 Windows 上使用 Qt Creator 设置缓存

c++ - 是否可以从 QListWidgetItem* 中提取行

c++ - 需要有关理解 C++ 中的 Rand() 和 XOR 的建议

c++ - 用于执行具有不同优先级的任意任务的线程池

c++ - Realm 中是否会支持 C++/Qt?

api - 如何使用 Qt API 制作包含鼠标光标的屏幕截图?

c++ - Qt 小部件在 Windows 中不服从拖放