【发布时间】:2016-06-22 03:38:32
【问题描述】:
这段代码:
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: 在 plotwindow.cpp:267 中没有这样的插槽
QCPAxis::MyAxis::rescale(QCPRange)
通常当我遇到这样的错误时,我会在类中添加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 宏。如果它拒绝,则说明某处有问题。如果它自动完成,您可以避免潜在的拼写错误。
标签: c++ qt signals-slots qcustomplot