私はQtを使ったプログラミングに比較的慣れていないので、質問がありました。短縮版:
スーパークラスで定義された信号を継承するにはどうすればよいですか?
他の誰かがうまく作成したQTWidgetsをサブクラス化して、デフォルトの動作の一部を変更しようとしています。
//Plot3Dはシグナル「rotationChanged」を定義するQWidgetです
クラスmatLinePlot:public QObject、public Plot3D {
Q_OBJECT;
//等...
公衆:
//等...
// Plot3Dのシグナル「rotationChanged」をキャッチし、それを使って魔法をかけます。
void initPlot(){
QObject :: connect(this、SIGNAL(rotationChanged(double、double、double))、
this、SLOT(myRotationChanged(double、double、double)));
}
};
問題はQObject::connect行にあります。私がやりたいのは、rotationChanged SIGNAL(qwt3D_plot.hから)をローカル関数/SLOT-"myRotationChanged"に接続することです。ただし、これを行うと、実行時に次のようになります。
Object :: connect:そのようなシグナルはありませんmatLinePlot :: rotationChanged(double、double、double)
C:...\matrixVisualization.hで。もちろん、私はそれrotationChangedが入っていないことを知っていますmatrixVisualization.h-それは入っていますが、私はすべてから継承しているので大丈夫だqwt_plot3D.hと思いました。Plot3Dでも、考えてみると、SIGNALとSLOTはマクロなので、MOCは継承を知らない/気にしないと思います。
MOCとSIGNALS/SLOTSは継承などについて知らないようですので、これが私の質問につながります。別の場所で定義されたウィジェットをサブクラス化して、ウィジェットの信号にアクセスするにはどうすればよいですか?
カプセル化を使用してこのようなことを実現する方法の例はたくさんありますが、継承を使用してこれを行う方法がわかりません。
これがばかげた質問である場合は申し訳ありません-私は明らかな何かを見逃しているように感じます。