1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtGui module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 3 as published by the Free Software 20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the 21 ** packaging of this file. Please review the following information to 22 ** ensure the GNU Lesser General Public License version 3 requirements 23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 24 ** 25 ** GNU General Public License Usage 26 ** Alternatively, this file may be used under the terms of the GNU 27 ** General Public License version 2.0 or (at your option) the GNU General 28 ** Public license version 3 or any later version approved by the KDE Free 29 ** Qt Foundation. The licenses are as published by the Free Software 30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 31 ** included in the packaging of this file. Please review the following 32 ** information to ensure the GNU General Public License requirements will 33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and 34 ** https://www.gnu.org/licenses/gpl-3.0.html. 35 ** 36 ** $QT_END_LICENSE$ 37 ** 38 ****************************************************************************/ 39 40 #ifndef QCURSOR_H 41 #define QCURSOR_H 42 43 #include <QtGui/qtguiglobal.h> 44 #include <QtCore/qpoint.h> 45 #include <QtGui/qwindowdefs.h> 46 47 QT_BEGIN_NAMESPACE 48 49 50 class QVariant; 51 class QScreen; 52 53 /* 54 ### The fake cursor has to go first with old qdoc. 55 */ 56 #ifdef QT_NO_CURSOR 57 58 class Q_GUI_EXPORT QCursor 59 { 60 public: 61 static QPoint pos(); 62 static QPoint pos(const QScreen *screen); 63 static void setPos(int x, int y); 64 static void setPos(QScreen *screen, int x, int y); setPos(const QPoint & p)65 inline static void setPos(const QPoint &p) { setPos(p.x(), p.y()); } 66 private: 67 QCursor(); 68 }; 69 70 #endif // QT_NO_CURSOR 71 72 #ifndef QT_NO_CURSOR 73 74 class QCursorData; 75 class QBitmap; 76 class QPixmap; 77 78 79 class Q_GUI_EXPORT QCursor 80 { 81 public: 82 QCursor(); 83 QCursor(Qt::CursorShape shape); 84 QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX=-1, int hotY=-1); 85 QCursor(const QPixmap &pixmap, int hotX=-1, int hotY=-1); 86 QCursor(const QCursor &cursor); 87 ~QCursor(); 88 QCursor &operator=(const QCursor &cursor); QCursor(QCursor && other)89 QCursor(QCursor &&other) noexcept : d(other.d) { other.d = nullptr; } 90 inline QCursor &operator=(QCursor &&other) noexcept 91 { swap(other); return *this; } 92 swap(QCursor & other)93 void swap(QCursor &other) noexcept { qSwap(d, other.d); } 94 95 operator QVariant() const; 96 97 Qt::CursorShape shape() const; 98 void setShape(Qt::CursorShape newShape); 99 100 #if QT_DEPRECATED_SINCE(5, 15) 101 QT_DEPRECATED_VERSION_X(5, 15, "Use the other overload which returns QBitmap by-value") 102 const QBitmap *bitmap() const; // ### Qt 7: Remove function 103 104 QT_DEPRECATED_VERSION_X(5, 15, "Use the other overload which returns QBitmap by-value") 105 const QBitmap *mask() const; // ### Qt 7: Remove function 106 107 QBitmap bitmap(Qt::ReturnByValueConstant) const; 108 QBitmap mask(Qt::ReturnByValueConstant) const; 109 #else 110 QBitmap bitmap(Qt::ReturnByValueConstant = Qt::ReturnByValue) const; // ### Qt 7: Remove arg 111 QBitmap mask(Qt::ReturnByValueConstant = Qt::ReturnByValue) const; // ### Qt 7: Remove arg 112 #endif // QT_DEPRECATED_SINCE(5, 15) 113 QPixmap pixmap() const; 114 QPoint hotSpot() const; 115 116 static QPoint pos(); 117 static QPoint pos(const QScreen *screen); 118 static void setPos(int x, int y); 119 static void setPos(QScreen *screen, int x, int y); setPos(const QPoint & p)120 inline static void setPos(const QPoint &p) { setPos(p.x(), p.y()); } setPos(QScreen * screen,const QPoint & p)121 inline static void setPos(QScreen *screen, const QPoint &p) { setPos(screen, p.x(), p.y()); } 122 123 private: 124 friend Q_GUI_EXPORT bool operator==(const QCursor &lhs, const QCursor &rhs) noexcept; 125 QCursorData *d; 126 }; 127 Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QCursor) 128 129 Q_GUI_EXPORT bool operator==(const QCursor &lhs, const QCursor &rhs) noexcept; 130 inline bool operator!=(const QCursor &lhs, const QCursor &rhs) noexcept { return !(lhs == rhs); } 131 132 /***************************************************************************** 133 QCursor stream functions 134 *****************************************************************************/ 135 #ifndef QT_NO_DATASTREAM 136 Q_GUI_EXPORT QDataStream &operator<<(QDataStream &outS, const QCursor &cursor); 137 Q_GUI_EXPORT QDataStream &operator>>(QDataStream &inS, QCursor &cursor); 138 #endif 139 140 #ifndef QT_NO_DEBUG_STREAM 141 Q_GUI_EXPORT QDebug operator<<(QDebug, const QCursor &); 142 #endif 143 144 #endif // QT_NO_CURSOR 145 146 QT_END_NAMESPACE 147 148 #endif // QCURSOR_H 149