C ++とQt(C++とQT4.8)を学ぶために取り組んでいるMainWindowアプリケーションがあります。Dialogs / WizardやMainWindowなど、アプリケーションのさまざまなオブジェクトでHTTPリクエストを実行したいと思います。基本的に、アプリケーションごとに1つのQNetworkAccessManagerが必要です。私の質問は、クラス間でこのQNAMを渡す適切な方法は何ですか?
現時点では、ウィザードのコンストラクターに渡すポインターとしてそれを持っていますが、これは...エレガントで柔軟性がないようです。ダイアログまたは作成することにした他のクラスに、1つのQNetworkAccessManagerへのアクセスを与える適切な方法は何ですか?すべてにアクセスできるようにするために必要なデータについても、同じ質問があると思います。
ここで適切に設計されたソリューションは何ですか?シングルトンパターンはオプションのように見えますが、私が理解しているように悪いパターンです。質問を表示するためのコードがここにあります。
ウィザードを起動するMainWindowコンストラクターとスロット:
MyMainWindow::MyMainWindow
{
qnam = new QNetworkAccessManager();
}
...
MyMainWindow::wizardStarter
{
mywizard = MyWizard(vari, qnam, this);
}
ユーザーからデータを取得した後にネットワーク要求を行い、データを解析しているウィザードコンストラクター。したがって、QNetworkAccessManagerが必要です。
MyWizard::MyWizard(SomeOtherArgument *vari, QNetworkAccessManager *qnam, QObject *parent)
{
...
this->ourQnam = qnam;
...
}
MyWizard::launchRequest(QUrl newUrl)
{
ourQnam->get(QNetworkRequest(newUrl));
}