Qt Quick 2 iOS Notch 避免
Posted
技术标签:
【中文标题】Qt Quick 2 iOS Notch 避免【英文标题】:Qt Quick 2 iOS Notch Avoidance 【发布时间】:2019-04-05 14:27:12 【问题描述】:我的应用是全屏的。
在使用 QT Quick 2 时,如何避免在带有凹槽的 ios 设备上将物品放在凹槽和主线后面?
我的应用在有和没有凹槽的设备上运行,我试图避免在没有凹槽的设备的顶部和底部出现空白区域。
【问题讨论】:
放一些东西作为占位符,然后用一个清晰的矩形挡住它? 是的,但是我的应用程序也可以在没有缺口的设备上运行。我不希望在没有凹槽的设备的顶部和底部出现空白 我用 Qt 定位 linux、windows 和 android,但没有做过 ios。是所有ios上的缺口吗?如果是这样,您可以编写一个 c++ 函数来使用#if defined(Q_OS_IOS)
检索操作系统。如何检测缺口何时存在?如果您可以检测到它,那么您可以使该占位符仅在存在缺口时可见。
【参考方案1】:
如果其他人也有同样的问题。
首先让您的应用在 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 文件中
【讨论】:
【参考方案2】:我联系了 QT 支持并得到了真正的答案。 在全屏运行应用时使用安全区域边距。
#include <qpa/qplatformwindow.h>
void MainWindowBackend::setWindow(QObject *window)
QWindow *qwin = qobject_cast<QWindow*>(window);
QPlatformWindow *pWin = qwin->handle();
QMargins safeArea = pWin->safeAreaMargins();
还加
QT += gui-private
在您的专业文件中
【讨论】:
您能否提供更多关于您的情况的 MainWindowBackend 的信息?以上是关于Qt Quick 2 iOS Notch 避免的主要内容,如果未能解决你的问题,请参考以下文章
Qt Quick Controls 2 TextArea`tabChangesFocus`,如何使用Tab键更改焦点,而不是键入Tab字符