У меня есть приложение MainWindow, над которым я работаю, чтобы изучить C++ и Qt (C++ и QT 4.8 ). Я хочу делать HTTP-запросы в разных объектах моего приложения, таких как Dialogs/Wizard и в MainWindow. Я знаю, что в основном должен иметь один QNetworkAccessManager для каждого приложения. Мой вопрос: как правильно передать этот QNAM между классами?
На данный момент у меня есть это как указатель, который я передаю конструктору моего мастера, но это кажется... неэлегантным и негибким. Каков правильный способ предоставить моим диалогам или любым другим классам, которые я решу создать, доступ к моему одному QNetworkAccessManager? Думаю, у меня тот же вопрос о любой части данных, к которым мне нужно предоставить доступ ко всему.
Какое здесь правильно разработанное решение C++ -? Паттерн singleton кажется вариантом, но плохим, как я понимаю. У меня есть немного кода, чтобы показать мой вопрос.
Мой конструктор MainWindow и слот, который запускает мой мастер:
MyMainWindow::MyMainWindow
{
qnam = new QNetworkAccessManager();
}
...
MyMainWindow::wizardStarter
{
mywizard = MyWizard(vari, qnam, this);
}
My Wizard Constructor, в котором я делаю сетевые запросы и анализирую данные после получения данных от пользователя, и, следовательно, в котором мне нужен QNetworkAccessManager:
MyWizard::MyWizard(SomeOtherArgument *vari, QNetworkAccessManager *qnam, QObject *parent)
{
...
this->ourQnam = qnam;
...
}
MyWizard::launchRequest(QUrl newUrl)
{
ourQnam->get(QNetworkRequest(newUrl));
}