在Linux平台上使用Qt的QProcess调用tslib的触屏校准程序:
process->startDetached("ts_calibrate",QStringList(),"",&pid);
触屏校准程序能调用成功,后台有进程,点击屏幕ts_calibrate有打印。但是ts_calibrate的界面显示不出来,如果将Qt程序关掉就能才能显示出来。感觉界面被Qt的界面挡住了,把Qt界面隐藏都是不行。使用start()或者execute()都是这个问题。
这种情况如何解决呢?
在Linux平台上使用Qt的QProcess调用tslib的触屏校准程序:
process->startDetached("ts_calibrate",QStringList(),"",&pid);
触屏校准程序能调用成功,后台有进程,点击屏幕ts_calibrate有打印。但是ts_calibrate的界面显示不出来,如果将Qt程序关掉就能才能显示出来。感觉界面被Qt的界面挡住了,把Qt界面隐藏都是不行。使用start()或者execute()都是这个问题。
这种情况如何解决呢?
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
使用 QProcess
在 Qt 中调用外部程序时,确实可能会遇到一些问题,特别是当这些程序有图形界面时。根据你的描述,ts_calibrate
程序似乎是在后台运行,并且其界面被 Qt 程序遮挡。这种情况可能由几个原因引起,下面是一些可能的解决方案:
ts_calibrate
程序是以正确的方式启动的。有时候,某些程序需要以特定的命令行参数启动来确保它们的界面正确显示。例如,你可能需要传递特定的参数来确保 ts_calibrate
的图形界面在前台运行。ts_calibrate
程序是否在 Qt 程序关闭前或关闭时正确地终止。在某些情况下,可能需要等待 ts_calibrate
完成后再关闭 Qt 程序。QProcess
的错误处理机制,确保没有错误或异常导致界面不显示。同时,可以使用调试信息来了解程序的运行情况。通过输出调试信息来跟踪程序的执行流程,特别是关注与 ts_calibrate
启动和窗口显示相关的部分。startDetached
方法外,你也可以尝试使用其他方法来启动外部程序,例如直接调用终端运行 ts_calibrate
命令来确认这是否与 Qt 程序有关。如果直接在终端运行没有问题,那么问题可能出在 Qt 程序如何管理子进程的方式上。QProcess
的输出和状态变化。这样你可以更精确地控制何时以及如何显示 ts_calibrate
的界面。最后,确保你使用的是最新的 Qt 版本和正确的 tslib
版本,有时候软件更新可能解决一些已知的问题。如果问题仍然存在,可能需要更深入地调查这两个程序之间的交互方式,或者考虑寻求社区或论坛的帮助来解决特定问题。