zoukankan      html  css  js  c++  java
  • QT 在Mac OS上截屏崩溃

    1.问题现象:

    使用QT 5.14.1编写的程序,需要截取整个桌面,在Windows下是正常的,在Mac下如果只有一个显示器是正常的,多个显示器的情况下有可能会崩溃。Mac OS会提示Float Point Exception,除0异常。且该异常无法利用程序try-catch进行捕获。

    2.问题分析:

    抓取桌面图像,使用QApplication::primaryScreen()->grabWindow(0)方式进行截取。在Mac OS系统下截取过程中发生除0异常,并且这个异常很特殊,就是单显示器情况下不会发生,只有多显示器的某种情况下会发生。具体何种情况下呢?就是如果在系统显示器设置中,如果将外接显示器设置为主显示器的时候会崩溃。通过看源码发现,grabWindow()方法中,存在计算两个矩形交集的运算,如果将外接显示器设置为第一个显示器的时候,就会导致计算矩形交集的width=0,而通过分析源码中刚好有除以width的计算,从而导致了该grabwindow()在这种情况下崩溃。

    3.解决办法:

    1)修改这部分源码,重新编译libqcocoa.dylib库

    2)好像5.15版本应该解决了这个问题;

    3)截屏钱判断是否存在多个屏幕,多了不让截。

  • 相关阅读:
    提高代码质量:如何编写函数
    如何写自我评价
    写简历注意事项
    Android开发注意细节
    Android:onNewIntent()触发机制及注意事项
    Atom与markdown
    Java程序性能优化总结
    Java中的继承与组合
    Fragment生命周期总结
    C# 生成随机姓名
  • 原文地址:https://www.cnblogs.com/chyshx/p/13424601.html
Copyright © 2011-2022 走看看