このコード:継承
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
を実行しますが、今回は動作しませんでした。ここで
は、クラスの宣言です:public slots:
に宣言を変更
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;
};
は、任意の違いはありませんでした。
ヒント:Qt Creatorのオートコンプリートを使用して、SIGNALおよびSLOTマクロを記入してください。それが拒否すれば、どこかに問題があります。オートコンプリートを行うと、誤植の可能性を避けることができます。 – hyde