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

  • 相关阅读:
    vue修改项目名
    CAS5.3.0安装部署
    nginx 10054报错问题解决方案
    react安装 项目构建
    oracle ORA-00119, ORA-00132问题解决
    SQL Server
    centos7设置httpd
    centos7 firewalld 开放端口
    java日期间相隔年月日计算
    PLSQL僵死
  • 原文地址:https://www.cnblogs.com/chyshx/p/13424601.html
Copyright © 2011-2022 走看看