Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qquickscreen.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 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
4#include <QtQuick/private/qquickscreen_p.h>
5#include <QtQuick/qquickwindow.h>
6
7#include <QtQuick/private/qquickitem_p.h>
8
9#include <QtGui/qguiapplication.h>
10#include <QtGui/qscreen.h>
11
13
199 : QObject(parent)
200 , m_screen(wrappedScreen)
201{
202}
203
205{
206 if (!m_screen)
207 return QString();
208 return m_screen->name();
209}
210
212{
213 if (!m_screen)
214 return QString();
215 return m_screen->manufacturer();
216}
217
219{
220 if (!m_screen)
221 return QString();
222 return m_screen->model();
223}
224
226{
227 if (!m_screen)
228 return QString();
229 return m_screen->serialNumber();
230}
231
233{
234 if (!m_screen)
235 return 0;
236 return m_screen->size().width();
237}
238
240{
241 if (!m_screen)
242 return 0;
243 return m_screen->size().height();
244}
245
247{
248 if (!m_screen)
249 return 0;
251}
252
254{
255 if (!m_screen)
256 return 0;
258}
259
261{
262 if (!m_screen)
263 return 0.0;
264 return m_screen->logicalDotsPerInch() / 25.4;
265}
266
268{
269 if (!m_screen)
270 return 0.0;
271 return m_screen->physicalDotsPerInch() / 25.4;
272}
273
275{
276 if (!m_screen)
277 return 1.0;
278 return m_screen->devicePixelRatio();
279}
280
287
294
296{
297 if (!m_screen)
298 return 0;
299 return m_screen->geometry().topLeft().x();
300}
301
303{
304 if (!m_screen)
305 return 0;
306 return m_screen->geometry().topLeft().y();
307}
308
310{
311 if (screen == m_screen)
312 return;
313
314 QScreen *oldScreen = m_screen;
316
317 if (oldScreen)
318 oldScreen->disconnect(this);
319
320 if (!screen) //Don't bother emitting signals, because the new values are garbage anyways
321 return;
322
323 if (!oldScreen || screen->geometry() != oldScreen->geometry()) {
324 emit virtualXChanged();
325 emit virtualYChanged();
326 }
327 if (!oldScreen || screen->size() != oldScreen->size()) {
330 }
331 if (!oldScreen || screen->name() != oldScreen->name())
333 if (!oldScreen || screen->manufacturer() != oldScreen->manufacturer())
334 emit manufacturerChanged();
335 if (!oldScreen || screen->model() != oldScreen->model())
336 emit modelChanged();
337 if (!oldScreen || screen->serialNumber() != oldScreen->serialNumber())
338 emit serialNumberChanged();
339 if (!oldScreen || screen->orientation() != oldScreen->orientation())
341 if (!oldScreen || screen->primaryOrientation() != oldScreen->primaryOrientation())
343 if (!oldScreen || screen->availableVirtualGeometry() != oldScreen->availableVirtualGeometry())
345 if (!oldScreen || screen->logicalDotsPerInch() != oldScreen->logicalDotsPerInch())
347 if (!oldScreen || screen->physicalDotsPerInch() != oldScreen->physicalDotsPerInch())
349 if (!oldScreen || screen->devicePixelRatio() != oldScreen->devicePixelRatio())
351
352 qmlobject_connect(screen, QScreen, SIGNAL(geometryChanged(QRect)),
354 qmlobject_connect(screen, QScreen, SIGNAL(geometryChanged(QRect)),
356 qmlobject_connect(screen, QScreen, SIGNAL(geometryChanged(QRect)),
357 this, QQuickScreenInfo, SIGNAL(virtualXChanged()));
358 qmlobject_connect(screen, QScreen, SIGNAL(geometryChanged(QRect)),
359 this, QQuickScreenInfo, SIGNAL(virtualYChanged()));
364 qmlobject_connect(screen, QScreen, SIGNAL(virtualGeometryChanged(QRect)),
366 qmlobject_connect(screen, QScreen, SIGNAL(logicalDotsPerInchChanged(qreal)),
368 qmlobject_connect(screen, QScreen, SIGNAL(physicalDotsPerInchChanged(qreal)),
370}
371
373{
374 return m_screen;
375}
376
378 : QQuickScreenInfo(attachee)
379{
380 m_attachee = qobject_cast<QQuickItem*>(attachee);
381
382 if (m_attachee) {
383 QQuickItemPrivate::get(m_attachee)->extra.value().screenAttached = this;
384
385 if (m_attachee->window()) //It might not be assigned to a window yet
386 windowChanged(m_attachee->window());
387 } else {
388 QQuickWindow *window = qobject_cast<QQuickWindow*>(attachee);
389 if (window)
391 }
392
393 if (!m_screen)
395}
396
403
413
415{
416 //qDebug() << "QQuickScreenAttached::screenChanged" << (screen ? screen->name() : QString::fromLatin1("null"));
417 if (screen != m_screen)
419}
420
422
423#include "moc_qquickscreen_p.cpp"
QScreen * primaryScreen
the primary (or default) screen of the application.
\inmodule QtCore
Definition qobject.h:103
static bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)
\threadsafe
Definition qobject.cpp:3236
static QQuickItemPrivate * get(QQuickItem *item)
QQuickWindow * window() const
Returns the window in which this item is rendered.
Q_INVOKABLE int angleBetween(int a, int b)
void screenChanged(QScreen *)
QQuickScreenAttached(QObject *attachee)
void windowChanged(QQuickWindow *)
void devicePixelRatioChanged()
void logicalPixelDensityChanged()
Qt::ScreenOrientation orientation
QPointer< QScreen > m_screen
FINALQString model
QQuickScreenInfo(QObject *parent=nullptr, QScreen *wrappedScreen=nullptr)
\qmltype Screen \instantiates QQuickScreenAttached \inqmlmodule QtQuick
QScreen * wrappedScreen() const
void pixelDensityChanged()
Qt::ScreenOrientation primaryOrientation
void orientationChanged()
void desktopGeometryChanged()
void setWrappedScreen(QScreen *screen)
void primaryOrientationChanged()
FINALQString serialNumber
\qmltype Window \instantiates QQuickWindow \inqmlmodule QtQuick
\inmodule QtCore\reentrant
Definition qrect.h:30
constexpr QPoint topLeft() const noexcept
Returns the position of the rectangle's top-left corner.
Definition qrect.h:221
The QScreen class is used to query screen properties. \inmodule QtGui.
Definition qscreen.h:32
QSize availableVirtualSize
the available size of the virtual desktop to which this screen belongs
Definition qscreen.h:44
qreal devicePixelRatio
the screen's ratio between physical pixels and device-independent pixels
Definition qscreen.h:59
QString model
the model of the screen
Definition qscreen.h:38
int angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b) const
Convenience function to compute the angle of rotation to get from rotation a to rotation b.
Definition qscreen.cpp:519
QRect geometry
the screen's geometry in pixels
Definition qscreen.h:45
QSize size
the pixel resolution of the screen
Definition qscreen.h:41
Qt::ScreenOrientation primaryOrientation
the primary screen orientation
Definition qscreen.h:61
QString manufacturer
the manufacturer of the screen
Definition qscreen.h:37
Qt::ScreenOrientation orientation
the screen orientation
Definition qscreen.h:62
QString name
a user presentable string representing the screen
Definition qscreen.h:36
qreal logicalDotsPerInch
the number of logical dots or pixels per inch
Definition qscreen.h:58
QString serialNumber
the serial number of the screen
Definition qscreen.h:39
QRect availableVirtualGeometry
the available geometry of the virtual desktop to which this screen belongs
Definition qscreen.h:49
qreal physicalDotsPerInch
the number of physical dots or pixels per inch
Definition qscreen.h:55
constexpr int height() const noexcept
Returns the height.
Definition qsize.h:133
constexpr int width() const noexcept
Returns the width.
Definition qsize.h:130
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
Combined button and popup list for selecting options.
ScreenOrientation
Definition qnamespace.h:271
@ PrimaryOrientation
Definition qnamespace.h:272
#define SLOT(a)
Definition qobjectdefs.h:52
#define SIGNAL(a)
Definition qobjectdefs.h:53
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
const GLubyte * c
#define qmlobject_disconnect(Sender, SenderType, Signal, Receiver, ReceiverType, Method)
Disconnect Signal of Sender from Method of Receiver.
#define qmlobject_connect(Sender, SenderType, Signal, Receiver, ReceiverType, Method)
Connect Signal of Sender to Method of Receiver.
QQuickItem * qobject_cast< QQuickItem * >(QObject *o)
Definition qquickitem.h:492
QScreen * screen
[1]
Definition main.cpp:29
#define emit
double qreal
Definition qtypes.h:187
aWidget window() -> setWindowTitle("New Window Title")
[2]