How can i prevent my app open multiple times with Qt?
-
I am using ubuntu and the way i check if another instance of my application is running is via a command called "pidof".
I have heard about "QtSingleApplication":http://doc.qt.nokia.com/solutions/4/qtsingleapplication/qtsingleapplication.html but its kinda weird. Seeing "this topic":http://developer.qt.nokia.com/forums/viewthread/3387 ( the link is dead ) i can understand that QtSingleApplication was never a part of the Qt libs. Is there any full guide on how to use this function? From downloading-installing to implementing it at your app.P.S Should i stay with pidof or try the QtSingleApplication?
Thanks for any answers :) -
If you have a target platform for which you develop, looking for pid could be the answer you're looking for, but it's not really all that great either (if your app crashes, the pid stays but the app doesn't work). There are examples about single instances of an application, but they are all "hacks". There is not Qt functionality about that (at least not with the GPL license).
Common cross platform solution is to run a tcp server on localhost and try to connect to it on start up. If you app can connect, it means another instance of your app is running. There are ways to communicate between the two copies as well. I cannot help you with link pointing to the right code atm.
-
Try QtSingleApplication - it's right way :)
Link to repo: http://qt.gitorious.org/qt-solutions/qt-solutions
-
[quote author="Vass" date="1315747553"]Try QtSingleApplication - it's right way :)
Link to repo: http://qt.gitorious.org/qt-solutions/qt-solutions[/quote]
Can u tell me. From all the files that are in qtsingleapplication.pro project which one should i see?
-
[quote author="Vass" date="1315761368"]Open INSTALL.TXT file, and read how you can build QtSingleApplication as Shared Library. after you would do it, you can use QtSingleApplication Library in you program. See examples in examples directory.[/quote]
Can't install it.. It keeps saying the same message:
!http://img690.imageshack.us/img690/4669/screenshotqtsingleappli.png(screen)! -
Have you tried to run qmake and make commands? :)
-
Why do you run configure as last element? It should be executed first.
-
Ok so here is the complete outpout of ./configure -> qmake -> make ( http://paste.ubuntu.com/688207/ )
After doing that i am including QtSingleApplication at my app and it says QtSingleApplication is not declared. -
The usual way is to add the path to the include path in your project file.
@
INCLUDEPATH += <location_of_qtsingleapplication_headers>
@
In addition, the QtSingleApplication libraries have to be added too.
@
LIBS += -L<location_of_qtsingleapplication_libraries>
LIBS += -l<name_of_qtsingleapplication_library>
@
And - of course - you will have to include the headers in your sources files too.
@
#include <QtSingleApplication>
@ -
So whats wrong with that:
@INCLUDEPATH += <~/Downloads/qt-solutions-qt-solutions/qtsingleapplication/src>
LIBS += -L<~/Downloads/qt-solutions-qt-solutions/qtsingleapplication/src>
LIBS += -l<~/Downloads/qt-solutions-qt-solutions/qtsingleapplication/src/qtsinglecoreapplication.h>@
? -
Forgot.
@INCLUDEPATH += ~/Downloads/qt-solutions-qt-solutions/qtsingleapplication/src
LIBS += -L~/Downloads/qt-solutions-qt-solutions/qtsingleapplication/src
LIBS += -l~/Downloads/qt-solutions-qt-solutions/qtsingleapplication/src/qtsinglecoreapplication.h@But still i cant
@#include <QtSingleApplication>@
at my cpp file.P.S Should it have a spece between -l and ~ symbol.?