親ウィジェットのいくつかの属性を取得しようとしています。子:InstrumentSelector
です。子からQtWidget親メソッドを呼び出す
InstrumentSelector
コンストラクタから、parent->metaObject()->className()
を実行すると、正しい名前(SamplerModule)が得られます。だから私は私の公式メソッドの一つ、例えばgetT()
を私のSamplerModule
ヘッダーとcppファイルのパブリックメソッドとして定義するといいでしょう。
しかし、私はこの関数を呼び出すときに、私はこのエラーを取得しています:
\app\widgets\instrumentselector.cpp:23: erreur : 'class QWidget' has no member named 'getT' msgBox.setText(parent->getT());
は、だから私はそれがC++とQtの基本だと思うが、私はまだそれを学んでいます。
誰かがアイデアを持っていますか?
コードを見ずに感謝
ありがとうございます!だから私のコードはかなり長いですが、私はそれを短くしようとします。 Selectorのシグネチャは 'InstrumentSelector :: InstrumentSelector(QWidget * parent):QPushButton(parent)'です。私は 'SamplerModule'UIファイルに36個のボタンを持っています。そして私は 'parent-> getT()を私のボタンコンストラクタで実行しようとしています。だから、私は 'InstrumentSelector'インスタンスにもっと情報を与えなければならないと思っていますが、どうやってそれを行うのか本当に分かりません。 :/ –
あなたが必要なのは次のとおりです: "SamplerModule * module = dynamic_cast(parent);" "module-> getT()"を使います。親が実際にSamplerModuleでない場合、動的キャストは失敗し、nullポインタを返します。また、基本クラスと派生クラスを読み込み、それぞれにポインタを使用する方法もあります。これは重要な概念であり、それをよく理解していなければ、あなたは非常に不満に思うでしょう。 :) –
goug
ありがとうございました!しかしその場合、 'module'は' SamplerModule'の "新しいインスタンス"になりますか? 'InstrumentSelector'が作成された場所ではありませんか?だから、もしこのようなことができないなら、この特定のインスタンスの 'SamplerModule'に値を設定する必要があるのですか? –