I'm developing a QApplication and I find that I often forget to close my application before rebuilding and re-running it. This becomes a problem when I accidentally look at an instance of my application built 10 minutes ago and expect to see code changes from 30 seconds ago.
It is also annoying because I have to move my hand all the way over to the mouse, move the mouse all the way over to the running application, and close it every time I want to rebuild and I am lazy and I don't want to do that.
Is it possible to configure Qt Creator to close my QApplication when I start building or running it again?
Try to add the following Custom Process Step at the top of the Build Steps
I am on Windows so the
killall
does not work. But I figured this out (enter the values in the same form that Julien has posted as a screenshot):Command:
taskkill
Arguments:
/FI "STATUS eq Running" /IM APPNAME.exe /F
You need to replace
APPNAME
with your application's name, of course. The/FI "STATUS eq Running"
is a filter that enables qmake to proceed after this pre-build-step, even if the application is not yet running (else it would not find the process to kill and then exit). Without the/F
the application won't get closed, at least for me.However, if your application has a icon in the trayarea, the icon won't disappear. The icon gets removed when you move the mouse over it.
There is an option to do that in Qt Creator:
To whomever might stumble here later, an easier way to o this is to put a "killall" command (as suggested by tangbongbong) is the first build step under Projects(ctrl+5) -> Build and Run
In the screenshot below my executable name was "Tutano" and I added the -9 option to ensure it would be killed.
Screenshot - sorry, I'm new here so can't post an image directly
Yes.
One way is to create a very simple script that kills your existing running process and starts a new one. If your program executable is
FooBarProgram
then go to the build directory that Qt has created and create this fileFooBarProgramLauncher
Now change the Qt project configuration to run your launcher instead running your program directly:
FooBarProgramLauncher
Now whenever you tell Qt to run your program it will run
FooBarProgramLauncher
instead which in turn will kill any running instances ofFooBarProgram
and then run the newly compiled executable.