1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
SingleInstanceApplication::SingleInstanceApplication(const QString &localName, int &argc, char **argv) :
QApplication(argc, argv),
m_isMainInstance(false)
{
m_socket = new QLocalSocket();
m_socket->connectToServer(localName);
// on essaie de se connecter a un potentiel serveur local
if(m_socket->waitForConnected(100)){
// ca a fonctionné... donc il existe deja une instance de notre logiciel
QThread::msleep(50);
// ex: ca envoi "action_of_my_button" a l instance principale
sendArgumentsToMainInstance(argv);
// on ferme la connection.
m_socket->close();
} else {
// ca ne fonctionne pas, donc il n y a pas encore d instance principale...
m_isMainInstance = true;
m_localServer = new QLocalServer(this);
connect(m_localServer, &QLocalServer::newConnection, this, &SingleInstanceApplication::localServerHasNewConnection);
m_localServer->listen(localName);
}
...
} |
Partager