これはこのウェブサイトでの私の最初の質問ですが、必要なすべてをカバーしようとします. 何か忘れていたらすみません。QT Creator を使用して問題が発生しましたが、Visual Studio または C++ を使用しても同じであると思います。
Mainwindow、Track、AddForm という 2 つのクラスがあります。メインウィンドウはそれが呼ばれるものです。メインフォーム。Track は、単一の QString 変数を含む QObject に基づくカスタム クラスです (今のところ、私はまだ QT を試しているためです)。AddForm は、MainWindow フォームのボタンをクリックして作成できる別のフォームのクラスです。そのフォームには、文字列を埋めるための単一の行編集と、「追加」というボタンのみが含まれています。そのボタンが押されるたびに、行編集のテキストが Track クラスの QString 変数に入れられます。その QString 変数は「アーティスト」と呼ばれます。
行編集からのテキストを Track オブジェクトの変数「artist」に割り当てることとは別に、フォームはそのオブジェクト全体を送信するシグナルも発行します。メインウィンドウ内のスロットがその信号に反応し、トラック オブジェクトを収集します。ここまでは順調ですね。
これが私の質問です。mainwindow-header 内で、trackVector という名前のプライベート QVector を作成しました。これを mainwindow.cpp 内で呼び出すことができます。私がやりたいことは、その Track オブジェクトで QVector を追加/プッシュバックすることです。このような並べ替え:
trackVector.push_back(trackObject);
アプリケーションのビルド時に次のエラー メッセージが表示されます: スクリーンショットを表示するには、ここをクリックしてください
もちろん、整数またはその他の変数を使用すると、これは非常に簡単です。あなたは私が推測するこのようなことをするだけです:
QVector<int> myVector;
myVector.push_back(3);
QVector (または標準の QT 以外のベクトル) を追加するときはいつでも、そのクラスのコンストラクターを使用して追加する必要があると思います。しかし、既存のオブジェクトを配置できるコンストラクターを作成するにはどうすればよいでしょうか?
私は英語のネイティブスピーカーではないので、できるだけ簡単な言葉で説明してください:) よろしくお願いします!