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?
-
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 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? :)
-
yeah... qmake -> make -> ./configure
just the same message... -
Why do you run configure as last element? It should be executed first.
-
It is ./configure -> qmake -> make.
-
O was reading not configured, when it is now configured..
So i quess now i completed the 3rd step of the install.txt. So after that what? The txt file is really messed up.I still have an error when including the QtSingleApplication.
-
Are you using the QtSingleApplication files directly or are you using them as a library?
If so, did the library compile without any errors? If not, which?
What errors do you have when including QtSingleApplication? -
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. -
Build looks fine. Have you set up include path correctly? Have you even included the neccessary header files?
-
So you mean copying the qtsinglecoreapplication.h file at my project directory and then
@#include "qtsingleapplication.h"
@
? -
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>@
? -
Remove < and > simbols
-
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.?
-
Try this
@INCLUDEPATH += ~/Downloads/qt-solutions-qt-solutions/qtsingleapplication/src
LIBS += -L~/Downloads/qt-solutions-qt-solutions/qtsingleapplication/src
LIBS += -lqtsinglecoreapplication
@