Этого код:C++/Qt - нет такого слота - Наследование
MyAxis *ax;
ax = static_cast<MyAxis*>(ui->customPlot->axisRect()->addAxis(QCPAxis::atLeft));
connect(ui->customPlot->yAxis, SIGNAL(rangeChanged(QCPRange)),
ax, SLOT(MyAxis::rescale(QCPRange)));
дает мне это во время выполнения ошибки:
QObject::connect: No such slot
QCPAxis::MyAxis::rescale(QCPRange)
in plotwindow.cpp:267
Обычно, когда я получаю ошибки, как это, я добавить Q_OBJECT
макрос класс и запустите qmake
, чтобы исправить это, но на этот раз это не сработало.
Вот объявление класса:
class MyAxis : public QCPAxis
{
Q_OBJECT
public:
void setRefAxis(QCPAxis *refAxis);
void setScale(double newScale);
public Q_SLOTS:
virtual void rescale(const QCPRange &range);
private:
double scale;
QCPAxis *ref;
};
Изменение декларации public slots:
не имеет никакого значения.
Подсказка: используйте автозаполнение Qt Creator, чтобы заполнить макросы SIGNAL и SLOT. Если он откажется, есть проблема где-то. Если это автозаполнение, вы избегаете возможных ошибок. – hyde