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

  • 相关阅读:
    [资料]PHP中的__autoload
    [转]php 5.3新增的闭包语法介绍function() use() {}
    [资料]PHP中的ReflectionClass
    [资料]PHP中的命名空间
    Mysql Event
    PHP转换成对像
    [转]Win7自带便签怎么恢复内容
    [转]Windows7便笺妙用
    [转]ASP.NET下MVC1.0>2.0>3.0>4.0
    PHP类动态属性问题
  • 原文地址:https://www.cnblogs.com/chyshx/p/13424601.html
Copyright © 2020-2023  润新知