I assume that all the other forms are created by your MainWindow at one time or another. Here is one approach:
Q_OBJECT
public:
m_server(new serversocket(this)) // the private server created here
{
...
}
private:
serversocket *m_server;
};
// and
Q_OBJECT
public:
Form
(serversocket
*server,
QWidget *p
= 0): QWidget(p
), m_server
(server
) { } // pointer to server kept here
void doStuff() {
m_server->doNetworkyThings() // pointer to server used here
};
private:
serversocket *m_server;
...
};
class MainWindow: public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *p = 0):
QMainWindow(p),
m_server(new serversocket(this)) // the private server created here
{
...
}
private:
serversocket *m_server;
};
// and
class Form: public QWidget {
Q_OBJECT
public:
Form(serversocket *server, QWidget *p = 0): QWidget(p), m_server(server)
{ } // pointer to server kept here
void doStuff() {
m_server->doNetworkyThings() // pointer to server used here
};
private:
serversocket *m_server;
...
};
To copy to clipboard, switch view to plain text mode
Then when you create a form in a MainWindow function that needs direct access to the server object:
...
Form *form = new Form(m_server, this); // pointer to server passed into form
...
...
Form *form = new Form(m_server, this); // pointer to server passed into form
...
To copy to clipboard, switch view to plain text mode
You may want to ask yourself is exposing the server directly is the best solution.
Bookmarks