«Нет такого слота» при попытке использовать QTimer - PullRequest
2 голосов
/ 09 декабря 2011

У меня есть оболочка графического представления, определенная как MyQGraphicsView::MyQGraphicsView(QWidget *parent) : QGraphicsView(parent)

В этом я пытаюсь установить событие обновления GUI с синхронизацией с QTimers.

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 Ответ

3 голосов
/ 09 декабря 2011

Есть несколько проблем с вашим кодом. Сначала вы пытаетесь соединить сигнал и слот с разными сигнатурами.

Вам потребуется (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) «Описание» слота не должно содержать имен аргументов и должно содержать типы аргументов, чтобы можно было правильно их маршалировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...