我有一个定义为MyQGraphicsView::MyQGraphicsView(QWidget *parent) : QGraphicsView(parent)
在此期间,我正在尝试使用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)
是什么给出的?我设置错了吗?
答案 0 :(得分:3)
您的代码存在多个问题。首先,您尝试使用不同的签名连接信号和插槽。
你需要(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“description”不得包含参数名称,并且必须包含参数的类型才能正确编组它们。