2013-02-19 8 views
8

Opracowuję aplikację QApplication i często zapominam o zamknięciu aplikacji przed jej odbudową i ponownym uruchomieniem. Staje się to problemem, gdy przypadkowo obejrzę wystąpienie mojej aplikacji zbudowanej 10 minut temu i spodziewam się zobaczyć zmiany kodu z 30 sekund wcześniej.Czy możesz skonfigurować program Qt Creator w celu zabicia uruchomionej aplikacji przed jej zbudowaniem lub uruchomieniem?

Jest to również denerwujące, ponieważ muszę przesunąć rękę do myszy, przesunąć mysz do działającej aplikacji i zamknąć za każdym razem, gdy chcę ją odbudować, a ja jestem leniwy i nie chcę tego robić.

Czy można skonfigurować program Qt Creator w celu zamknięcia aplikacji QApplication, gdy zacznę ją budować lub uruchamiać ponownie?

Odpowiedz

12

Istnieje możliwość, aby to zrobić w Qt Creator:

  1. otworzyć Preferencje => Zbuduj & run => Ogólne
  2. Change „aplikacji przystanek przed budynek” od „brak” do „tego samego projektu "
+0

To powinno być domyślnie "Ten sam projekt" po instalacji – Jangles

+0

W Qt Creator 4.4.1, ta opcja jest znaleźć w menu Narzędzia> Opcje> Utwórz i uruchom> Ogólne – PaulrBear

1

Tak.

Jednym ze sposobów jest stworzenie bardzo prostego skryptu, który zabija istniejący uruchomiony proces i uruchamia nowy. Jeśli program wykonywalny jest FooBarProgram następnie przejdź do katalogu build że Qt stworzył i utworzyć ten plik FooBarProgramLauncher

#!/bin/bash 

killall FooBarProgram 
./FooBarProgram 

teraz zmienić konfigurację projektu Qt, aby uruchomić wyrzutnię zamiast uruchomić program bezpośrednio:

  1. Otwórz projekt w Qt Creator
  2. Wybierz „Projekty” z okienka po lewej
  3. Wybierz zakładkę „Budowanie & Run”, jeśli nie została jeszcze wybrana
  4. Wybierz „Uruchom” podrzędną
  5. Pod „Run” kliknij przycisk „Dodaj”, wybierz „Custom Executable”
  6. Na linii „Command”, kliknij przycisk „Przeglądaj” i wybierz FooBarProgramLauncher

teraz gdy powiesz Qt, aby uruchomić program będzie działać FooBarProgramLauncher zamiast co z kolei zabije wszelkie przypadki bieżących FooBarProgram a następnie uruchomić nowo skompilowany plik wykonywalny.

6

Do kogo może potknąć się tu później, łatwiejszy sposób o to, aby umieścić "killall" polecenia (jak sugeruje tangbongbong) jest pierwszym etapem budowy w ramach projektów (ctrl + 5) -> Build and Run

Na zrzucie ekranu poniżej moją nazwą pliku wykonywalnego było "Tutano" i dodałem opcję -9, aby upewnić się, że zostanie ona zabita.

Screenshot - Przepraszam, jestem tu nowy, więc nie można zakładać obrazu bezpośrednio

+0

Zdecydowanie lepsze rozwiązanie, IMO. –

+2

Dbanie o 2 lata na to pytanie w przypadku problemu odwrotnego: po aktualizacji Qt Creator (3.6.0 w Windows), jeśli uruchomię "Run", moja otwarta aplikacja zostanie zakończona ... I nie chcę tego (muszę zrobić poprawne wylogowanie). Jeśli chcesz, zamieściłem [zrzut ekranu tej opcji] (http://www.deste360.com/blog/2015/12/qt-creator-apre-solo-unapplicazione/) na moim blogu. Znajduję opcję "Build & Run" w IDE, której nie znałem: "Zatrzymaj aplikacje przed budowaniem". – deste

3

Spróbuj dodać następujące niestandardowe kroku proces w szczycie produkcji Etapy

enter image description here

+0

W systemie Windows użyj polecenia "Command: taskkill", "Argumenty:/f/t/im FooBarProgram.exe || true" – Zmey

1

Jestem na Windowsie, więc killall nie działa. Ale zorientowaliśmy się (wprowadzić wartości w tej samej formie, że Julien został oddelegowany jako zrzut ekranu):

polecenie: taskkill

argumenty /FI "STATUS eq Running" /IM APPNAME.exe /F

Trzeba zastąpić APPNAME z nazwą Twojej aplikacji , oczywiście. Filtr /FI "STATUS eq Running" to filtr, który umożliwia qmake kontynuowanie po tym etapie wstępnego budowania, nawet jeśli aplikacja nie jest jeszcze uruchomiona (w przeciwnym razie nie znalazłby procesu, który mógłby zabić, a następnie zakończył działanie). Bez aplikacji /F aplikacja nie zostanie zamknięta, przynajmniej dla mnie.

Jeśli jednak twoja aplikacja ma ikonę w tacy papieru, ikona nie zniknie. Ikona zostanie usunięta po najechaniu na nią myszą.

Powiązane problemy