Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qplatformwindow.h
Go to the documentation of this file.
1// Copyright (C) 2017 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4#ifndef QPLATFORMWINDOW_H
5#define QPLATFORMWINDOW_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is part of the QPA API and is not meant to be used
12// in applications. Usage of this API may make your code
13// source and binary incompatible with future versions of Qt.
14//
15
16#include <QtGui/qtguiglobal.h>
17#include <QtCore/qscopedpointer.h>
18#include <QtCore/qrect.h>
19#include <QtCore/qmargins.h>
20#include <QtCore/qstring.h>
21#include <QtGui/qwindowdefs.h>
22#include <QtGui/qwindow.h>
23#include <qpa/qplatformopenglcontext.h>
24#include <qpa/qplatformsurface.h>
25
27
28#define QWINDOWSIZE_MAX ((1<<24)-1)
29
30class QPlatformScreen;
32class QScreen;
33class QWindow;
34class QIcon;
35class QRegion;
36
37class Q_GUI_EXPORT QPlatformWindow : public QPlatformSurface
38{
39 Q_DECLARE_PRIVATE(QPlatformWindow)
40public:
41 Q_DISABLE_COPY_MOVE(QPlatformWindow)
42
43 explicit QPlatformWindow(QWindow *window);
44 ~QPlatformWindow() override;
45
46 virtual void initialize();
47
48 QWindow *window() const;
49 QPlatformWindow *parent() const;
50
51 QPlatformScreen *screen() const override;
52
53 virtual QSurfaceFormat format() const override;
54
55 virtual void setGeometry(const QRect &rect);
56 virtual QRect geometry() const;
57 virtual QRect normalGeometry() const;
58
59 virtual QMargins frameMargins() const;
60 virtual QMargins safeAreaMargins() const;
61
62 virtual void setVisible(bool visible);
63 virtual void setWindowFlags(Qt::WindowFlags flags);
64 virtual void setWindowState(Qt::WindowStates state);
65
66 virtual WId winId() const;
67 virtual void setParent(const QPlatformWindow *window);
68
69 virtual void setWindowTitle(const QString &title);
70 virtual QString windowTitle() const;
71 virtual void setWindowFilePath(const QString &title);
72 virtual void setWindowIcon(const QIcon &icon);
73 virtual bool close();
74 virtual void raise();
75 virtual void lower();
76
77 virtual bool isExposed() const;
78 virtual bool isActive() const;
79 virtual bool isAncestorOf(const QPlatformWindow *child) const;
80 virtual bool isEmbedded() const;
81 virtual bool isForeignWindow() const { return false; }
82 virtual QPoint mapToGlobal(const QPoint &pos) const;
83 QPointF mapToGlobalF(const QPointF &pos) const;
84 virtual QPoint mapFromGlobal(const QPoint &pos) const;
85 QPointF mapFromGlobalF(const QPointF &pos) const;
86
87 virtual void propagateSizeHints();
88
89 virtual void setOpacity(qreal level);
90 virtual void setMask(const QRegion &region);
91 virtual void requestActivateWindow();
92
93 virtual void handleContentOrientationChange(Qt::ScreenOrientation orientation);
94
95 virtual qreal devicePixelRatio() const;
96
97 virtual bool setKeyboardGrabEnabled(bool grab);
98 virtual bool setMouseGrabEnabled(bool grab);
99
100 virtual bool setWindowModified(bool modified);
101
102 virtual bool windowEvent(QEvent *event);
103
104 virtual bool startSystemResize(Qt::Edges edges);
105 virtual bool startSystemMove();
106
107 virtual void setFrameStrutEventsEnabled(bool enabled);
108 virtual bool frameStrutEventsEnabled() const;
109
110 virtual void setAlertState(bool enabled);
111 virtual bool isAlertState() const;
112
113 virtual void invalidateSurface();
114
115 static QRect initialGeometry(const QWindow *w, const QRect &initialGeometry,
116 int defaultWidth, int defaultHeight,
117 const QScreen **resultingScreenReturn = nullptr);
118
119 virtual void requestUpdate();
120 bool hasPendingUpdateRequest() const;
121 virtual void deliverUpdateRequest();
122 virtual bool allowsIndependentThreadedRendering() const;
123
124 // Window property accessors. Platform plugins should use these
125 // instead of accessing QWindow directly.
126 QSize windowMinimumSize() const;
127 QSize windowMaximumSize() const;
128 QSize windowBaseSize() const;
129 QSize windowSizeIncrement() const;
130 QRect windowGeometry() const;
131 QRect windowFrameGeometry() const;
132 QRectF windowClosestAcceptableGeometry(const QRectF &nativeRect) const;
133 static QRectF closestAcceptableGeometry(const QWindow *w, const QRectF &nativeRect);
134
135protected:
136 static QString formatWindowTitle(const QString &title, const QString &separator);
137 QPlatformScreen *screenForGeometry(const QRect &newGeometry) const;
138 static QSize constrainWindowSize(const QSize &size);
139
140 QScopedPointer<QPlatformWindowPrivate> d_ptr;
141};
142
143QT_END_NAMESPACE
144
145#endif //QPLATFORMWINDOW_H
Collection of utility functions for UI scaling.
The QPlatformIntegration class is the entry for WindowSystem specific functionality.
The QPlatformWindow class provides an abstraction for top-level windows.
T toNativePixels(const T &value, const C *context)
QHighDpiScaling::Point position(T, QHighDpiScaling::Point::Kind)
QList< T > scale(const QList< T > &list, qreal scaleFactor, QPoint origin=QPoint(0, 0))
T toNativeLocalPosition(const T &value, const C *context)
QSize scale(const QSize &value, qreal scaleFactor, QPointF=QPointF(0, 0))
T toNativeGlobalPosition(const T &value, const C *context)
T fromNativeLocalPosition(const T &value, const C *context)
T fromNativeGlobalPosition(const T &value, const C *context)
T toNative(const T &value, qreal scaleFactor, QPoint origin=QPoint(0, 0))
QRect fromNativeScreenGeometry(const QRect &nativeScreenGeometry, const QScreen *screen)
QRect fromNative(const QRect &rect, const QScreen *screen, const QPoint &screenOrigin)
QRegion fromNativeLocalExposedRegion(const QRegion &pixelRegion, const QWindow *window)
QRegion fromNativeLocalRegion(const QRegion &pixelRegion, const QWindow *window)
qreal scale(qreal value, qreal scaleFactor, QPointF=QPointF(0, 0))
T fromNativePixels(const T &value, const C *context)
QHighDpiScaling::Point position(QPoint point, QHighDpiScaling::Point::Kind kind)
QRegion toNativeLocalRegion(const QRegion &pointRegion, const QWindow *window)
T fromNative(const T &value, qreal scaleFactor, QPoint origin=QPoint(0, 0))
T toNativeWindowGeometry(const T &value, const C *context)
T fromNativeWindowGeometry(const T &value, const C *context)
Combined button and popup list for selecting options.
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")
static const char screenFactorsEnvVar[]
static const char dpiAdjustmentPolicyEnvVar[]
static const ScaleFactorRoundingPolicyLookup scaleFactorRoundingPolicyLookup[]
static bool operator==(const EnumLookup< EnumType > &e1, const EnumLookup< EnumType > &e2)
static const char scaleFactorRoundingPolicyEnvVar[]
static std::optional< qreal > qEnvironmentVariableOptionalReal(const char *name)
static Qt::HighDpiScaleFactorRoundingPolicy lookupScaleFactorRoundingPolicy(const QByteArray &v)
static const char enableHighDpiScalingEnvVar[]
static const DpiAdjustmentPolicyLookup dpiAdjustmentPolicyLookup[]
static const char usePhysicalDpiEnvVar[]
static std::optional< QString > qEnvironmentVariableOptionalString(const char *name)
static std::optional< QByteArray > qEnvironmentVariableOptionalByteArray(const char *name)
static QByteArray joinEnumValues(const EnumLookup< EnumType > *i1, const EnumLookup< EnumType > *i2)
static const char scaleFactorEnvVar[]
static const char scaleFactorProperty[]
static QHighDpiScaling::DpiAdjustmentPolicy lookupDpiAdjustmentPolicy(const QByteArray &v)
std::pair< qreal, qreal > QDpi
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcQIORing)
const char * name