诺水城子 2024-09-24 19:04 采纳率: 0%
浏览 1

Linux平台上使用Qt的QProcess调用tslib的触屏校准程序,校准程序不显示问题

在Linux平台上使用Qt的QProcess调用tslib的触屏校准程序:

process->startDetached("ts_calibrate",QStringList(),"",&pid);

触屏校准程序能调用成功,后台有进程,点击屏幕ts_calibrate有打印。但是ts_calibrate的界面显示不出来,如果将Qt程序关掉就能才能显示出来。感觉界面被Qt的界面挡住了,把Qt界面隐藏都是不行。使用start()或者execute()都是这个问题。
这种情况如何解决呢?

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-24 19:05
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    使用 QProcess 在 Qt 中调用外部程序时,确实可能会遇到一些问题,特别是当这些程序有图形界面时。根据你的描述,ts_calibrate 程序似乎是在后台运行,并且其界面被 Qt 程序遮挡。这种情况可能由几个原因引起,下面是一些可能的解决方案:

    1. 运行模式和参数问题:确保 ts_calibrate 程序是以正确的方式启动的。有时候,某些程序需要以特定的命令行参数启动来确保它们的界面正确显示。例如,你可能需要传递特定的参数来确保 ts_calibrate 的图形界面在前台运行。
    2. 窗口管理问题:在 Linux 中,窗口管理器负责窗口的显示和管理。如果你的 Qt 程序以某种方式影响了窗口管理器的工作,那么它可能会遮挡其他程序的界面。你可以尝试调整 Qt 程序以允许其他窗口显示。这可能涉及到调整窗口属性或使用 Qt 的窗口管理功能来确保不会遮挡其他窗口。
    3. 程序生命周期问题:有时后台程序的运行方式可能会影响到前台程序的界面显示。你可能需要检查 ts_calibrate 程序是否在 Qt 程序关闭前或关闭时正确地终止。在某些情况下,可能需要等待 ts_calibrate 完成后再关闭 Qt 程序。
    4. 错误处理与调试:检查 QProcess 的错误处理机制,确保没有错误或异常导致界面不显示。同时,可以使用调试信息来了解程序的运行情况。通过输出调试信息来跟踪程序的执行流程,特别是关注与 ts_calibrate 启动和窗口显示相关的部分。
    5. 尝试不同的启动方式:除了使用 startDetached 方法外,你也可以尝试使用其他方法来启动外部程序,例如直接调用终端运行 ts_calibrate 命令来确认这是否与 Qt 程序有关。如果直接在终端运行没有问题,那么问题可能出在 Qt 程序如何管理子进程的方式上。
    6. 使用信号或槽来处理界面显示:在 Qt 中使用信号和槽的机制来管理 QProcess 的输出和状态变化。这样你可以更精确地控制何时以及如何显示 ts_calibrate 的界面。

    最后,确保你使用的是最新的 Qt 版本和正确的 tslib 版本,有时候软件更新可能解决一些已知的问题。如果问题仍然存在,可能需要更深入地调查这两个程序之间的交互方式,或者考虑寻求社区或论坛的帮助来解决特定问题。

    评论

报告相同问题?

问题事件

  • 修改了问题 9月24日
  • 创建了问题 9月24日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?