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)截屏钱判断是否存在多个屏幕,多了不让截。

  • 相关阅读:
    一些可以参考的常用工具库类整理
    Java(Android)线程池 总结
    JAVA泛型
    设计模式总结
    原型模式
    工厂模式与抽象工厂模式
    组合模式
    适配器模式
    建造者模式
    外观模式
  • 原文地址:https://www.cnblogs.com/chyshx/p/13424601.html
Copyright © 2011-2022 走看看