Расширяю класс, создаю таймер и слот таймера. При исполнении говорит, что нет слота в классе, который расширяю. Как подписаться на слот, который в расширяемом классе?
Graph::Graph(QWidget *parent) : QCustomPlot(parent)
{
...
trackTimer = new QTimer();
connect(trackTimer, SIGNAL(timeout()), this, SLOT(PlaybackStep()));
qDebug() << this->metaObject()->className(); // выдаёт QCustomPlot а нужно Graph
trackTimer->start(100);
}
void Graph::PlaybackStep()
{...}
Вывод приложения QObject::connect: No such slot QCustomPlot::PlaybackStep() in ..\stms2\src\graph.cpp:21
Спасибо.
Объявите Q_OBJECT в классе Graph. Примерно так:
class Graph : public QCustomPlot
{
Q_OBJECT //Добавить это
public:
...
public slots: //есть вероятность, что вы забыли public slots (либо private slots, protected slots)
void PlaybackStep(); //Ваш слот
};
Перед компиляцией кликните правой кнопкой мыши по узлу проекта и выберите "Run qmake" чтобы не заглючило.
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
У меня проблемы с использованием pthread_create если передавать в аргумент метод класса, потому что компилятор постоянно выдает ошибку:
Я новичек в С++, объясните пожалуйста, почему не отрабатывает дружественная функция в main? Имеется:
Консольное приложениеЕсть цикл, в нем по очереди вызываются 3 метода класса