Qt Quick 2 iOS Notch避免

时间:2019-04-05 14:27:12

标签: c++ ios qt qml

我的应用全屏显示。

在使用QT Quick 2时,如何避免在带有缺口的iOS设备上在缺口和主页行后面放置项目?

我的应用程序可以在带有和不带有缺口的设备上运行,并且我试图避免没有缺口的设备顶部和底部出现空白区域。

2 个答案:

答案 0 :(得分:0)

如果其他人遇到同样的问题。

首先使您的应用在iOS上不全屏显示,这将在应用的顶部和底部创建黑色区域。

您可以更改黑色区域的颜色以更好地适合您的应用程序:

notch.h

#ifndef NOTCH_H
#define NOTCH_H

#include <QObject>

class Notch : public QObject{
  Q_OBJECT
public:
  Notch();
};

#endif

notch.mm

#include <UIKit/UIKit.h>
#include "notch.h"

Notch::Notch()
{
    //Top
    UIView *statusBar = (UIView *)[[UIApplication sharedApplication] valueForKey:@"statusBar"];
    statusBar.backgroundColor = [UIColor colorWithRed:0.09 green:0.14 blue:0.19 alpha:1.0];

    //Bottom
    UIApplication *app = [UIApplication sharedApplication];
    app.windows.firstObject.backgroundColor = [UIColor whiteColor];
}

现在只需调用Notch();在您的main.cpp文件中

答案 1 :(得分:0)

I Contacted QT Support and got the real answer. Use the Safe Area Margins when running your app in fullscreen.

 #include <qpa/qplatformwindow.h>

 void MainWindowBackend::setWindow(QObject *window)
 {
      QWindow *qwin = qobject_cast<QWindow*>(window);
      QPlatformWindow *pWin = qwin->handle();
      QMargins safeArea = pWin->safeAreaMargins();
 }

also add

 QT += gui-private

in your pro file