我正在开发一个 QApplication,我发现我经常忘记在重建和重新运行它之前关闭我的应用程序。当我不小心查看了 10 分钟前构建的应用程序实例并期望看到 30 秒前的代码更改时,这会成为一个问题。
这也很烦人,因为我必须将手一直移到鼠标上,将鼠标一直移到正在运行的应用程序,并且每次我想重建时都关闭它,我很懒惰,我不想要做到这一点。
是否可以将 Qt Creator 配置为在我开始构建或再次运行 QApplication 时关闭它?
我正在开发一个 QApplication,我发现我经常忘记在重建和重新运行它之前关闭我的应用程序。当我不小心查看了 10 分钟前构建的应用程序实例并期望看到 30 秒前的代码更改时,这会成为一个问题。
这也很烦人,因为我必须将手一直移到鼠标上,将鼠标一直移到正在运行的应用程序,并且每次我想重建时都关闭它,我很懒惰,我不想要做到这一点。
是否可以将 Qt Creator 配置为在我开始构建或再次运行 QApplication 时关闭它?
在 Qt Creator 中有一个选项可以做到这一点:
对于以后可能会在这里绊倒的人来说,一个更简单的方法是在 Projects(ctrl+5) -> Build and Run 下放置一个“killall”命令(如 tangbongbong 所建议的)是第一个构建步骤
在下面的屏幕截图中,我的可执行文件名称是“Tutano”,我添加了 -9 选项以确保它会被杀死。
截图 - 对不起,我是新来的,所以不能直接发布图片
尝试在构建步骤顶部添加以下自定义流程步骤
我在 Windows 上,所以killall
不起作用。但我想通了(以 Julien 作为屏幕截图发布的相同形式输入值):
命令:taskkill
论据:/FI "STATUS eq Running" /IM APPNAME.exe /F
当然,您需要替换APPNAME
为您的应用程序的名称。这/FI "STATUS eq Running"
是一个过滤器,它使 qmake 在此预构建步骤之后继续进行,即使应用程序尚未运行(否则它不会找到要杀死然后退出的进程)。没有/F
应用程序就不会关闭,至少对我来说是这样。
但是,如果您的应用程序在托盘区域中有一个图标,则该图标不会消失。当您将鼠标移到图标上时,该图标将被删除。
是的。
一种方法是创建一个非常简单的脚本,该脚本会终止您现有的正在运行的进程并启动一个新进程。如果您的程序可执行文件FooBarProgram
然后转到 Qt 创建的构建目录并创建此文件FooBarProgramLauncher
#!/bin/bash
killall FooBarProgram
./FooBarProgram
现在更改 Qt 项目配置以运行您的启动器,而不是直接运行您的程序:
FooBarProgramLauncher
现在,每当您告诉 Qt 运行您的程序时,它都会运行FooBarProgramLauncher
,这反过来会杀死任何正在运行的实例,FooBarProgram
然后运行新编译的可执行文件。