I have a MainWindow application I'm working on to learn C++ and Qt (C++ and QT 4.8). I want to do HTTP requests in different objects of my application, such as Dialogs/Wizard and in the MainWindow. I know I'm basically supposed to have one QNetworkAccessManager per application. My question is, what is the proper way to pass this QNAM around between classes?
At the moment I have it as a pointer I pass to the constructor of my wizard but this seems... inelegant and inflexible. What is the proper way to give my Dialogs or whatever other classes I decide to make, access to my one QNetworkAccessManager? I guess I have the same question about any piece of data I need to give everything access to.
What is the properly C++-designed solution here? The singleton pattern seems like an option, but a bad one as I understand. I have a bit of code here to show my question.
My MainWindow constructor and slot which launch my wizard:
MyMainWindow::MyMainWindow
{
qnam = new QNetworkAccessManager();
}
...
MyMainWindow::wizardStarter
{
mywizard = MyWizard(vari, qnam, this);
}
My Wizard Constructor in which I'm making network requests and parsing data after getting data from the user, and therefore in which I need a QNetworkAccessManager:
MyWizard::MyWizard(SomeOtherArgument *vari, QNetworkAccessManager *qnam, QObject *parent)
{
...
this->ourQnam = qnam;
...
}
MyWizard::launchRequest(QUrl newUrl)
{
ourQnam->get(QNetworkRequest(newUrl));
}