Класс QCursor
Класс QCursor предоставляет указатель мыши с произвольной формой. Подробнее...
| Заголовок: | #include <QCursor> |
| qmake: | QT += gui |
Открытые функции
| QCursor() | |
| QCursor(Qt::CursorShape shape) | |
| QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX = -1, int hotY = -1) | |
| QCursor(const QPixmap &pixmap, int hotX = -1, int hotY = -1) | |
| QCursor(const QCursor &c) | |
| QCursor(QCursor &&other) | |
| ~QCursor() | |
| const QBitmap * | bitmap() const |
| QPoint | hotSpot() const |
| const QBitmap * | mask() const |
| QPixmap | pixmap() const |
| void | setShape(Qt::CursorShape shape) |
| Qt::CursorShape | shape() const |
| void | swap(QCursor &other) |
| QVariant | operator QVariant() const |
| QCursor & | operator=(const QCursor &c) |
| QCursor & | operator=(QCursor &&other) |
Статические открытые члены
| QPoint | pos() |
| QPoint | pos(const QScreen *screen) |
| void | setPos(int x, int y) |
| void | setPos(QScreen *screen, int x, int y) |
| void | setPos(const QPoint &p) |
| void | setPos(QScreen *screen, const QPoint &p) |
Связанные нечлены
| bool | operator!=(const QCursor &lhs, const QCursor &rhs) |
| QDataStream & | operator<<(QDataStream &stream, const QCursor &cursor) |
| bool | operator==(const QCursor &lhs, const QCursor &rhs) |
| QDataStream & | operator>>(QDataStream &stream, QCursor &cursor) |
Подробное описание
Класс QCursor предоставляет указатель мыши с произвольной формой.
Этот класс в основном используется для создания указателей мыши, связанных с определенными виджетами, и для получения и установки положения указателя мыши.
Qt имеет ряд стандартных форм указателей, но вы также можете создавать пользовательские формы указателей на основе QBitmap, маски и точки закрепления.
Чтобы связать указатель с виджетом, используйте QWidget::setCursor(). Чтобы связать указатель со всеми виджетами (обычно на короткий период времени), используйте QGuiApplication::setOverrideCursor().
Чтобы установить форму указателя, используйте QCursor::setShape() или используйте конструктор QCursor, который принимает форму в качестве аргумента, или вы можете использовать один из предопределенных указателей, определенных в перечислении Qt::CursorShape.
Если вы хотите создать указатель со своим собственным битовым изображением, используйте конструктор QCursor, который принимает битовое изображение и маску в качестве аргументов, или конструктор, который принимает пиксель в качестве аргументов.
Чтобы установить или получить положение указателя мыши, используйте статические методы QCursor::pos() и QCursor::setPos().
Примечание: Можно создать QCursor до QGuiApplication, но это бесполезно, за исключением использования в качестве заглушки для настоящего QCursor, созданного после QGuiApplication. Попытка использовать QCursor, созданный до QGuiApplication, приведет к сбою.
Примечание для пользователей X11
В X11 Qt поддерживает библиотеку Xcursor, которая позволяет использовать темы икон с полным цветом. Таблица ниже показывает имя указателя, используемое для каждого значения Qt::CursorShape. Если указатель не найден с использованием показанного ниже имени, будет использован стандартный указатель X11. Примечание: X11 не предоставляет подходящие указатели для всех возможных значений Qt::CursorShape. Возможно, некоторые указатели будут взяты из темы Xcursor, в то время как другие будут использовать внутренний битовый указатель.
| Форма | Значение Qt::CursorShape | Имя указателя | Форма | Значение Qt::CursorShape | Имя указателя |
|---|---|---|---|---|---|
| Qt::ArrowCursor | left_ptr |
Qt::SizeVerCursor | size_ver |
||
| Qt::UpArrowCursor | up_arrow |
Qt::SizeHorCursor | size_hor |
||
| Qt::CrossCursor | cross |
Qt::SizeBDiagCursor | size_bdiag |
||
| Qt::IBeamCursor | ibeam |
Qt::SizeFDiagCursor | size_fdiag |
||
| Qt::WaitCursor | wait |
Qt::SizeAllCursor | size_all |
||
| Qt::BusyCursor | left_ptr_watch |
Qt::SplitVCursor | split_v |
||
| Qt::ForbiddenCursor | forbidden |
Qt::SplitHCursor | split_h |
||
| Qt::PointingHandCursor | pointing_hand |
Qt::OpenHandCursor | openhand |
||
| Qt::WhatsThisCursor | whats_this |
Qt::ClosedHandCursor | closedhand |
||
| Qt::DragMoveCursor |
dnd-move или move
|
Qt::DragCopyCursor |
dnd-copy или copy
|
||
| Qt::DragLinkCursor |
dnd-link или link
|
См. также QWidget и Руководство по проектированию пользовательского интерфейса: Курсоры.
Документация по членам-функциям
QCursor::QCursor()
Создаёт курсор с формой по умолчанию (стрелка).
QCursor::QCursor(Qt::CursorShape shape)
Создаёт курсор с заданной формой shape.
См. Qt::CursorShape для списка форм.
См. также setShape().
QCursor::QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX = -1, int hotY = -1)
Создаёт пользовательский курсор на основе растрового изображения.
bitmap и mask составляют растровое изображение. hotX и hotY определяют точку «горячей» области курсора.
Если hotX отрицательно, он устанавливается в значение bitmap().width()/2. Если hotY отрицательно, он устанавливается в значение bitmap().height()/2.
Биты растрового изображения курсора (B) и маски (M) комбинируются следующим образом:
- B=1 и M=1 даёт чёрный цвет.
- B=0 и M=1 даёт белый цвет.
- B=0 и M=0 даёт прозрачность.
- B=1 и M=0 даёт результат XOR под Windows, неопределённый результат на всех других платформах.
Используйте глобальные цвета Qt Qt::color0 для рисования пикселей 0 и Qt::color1 для рисования пикселей 1 в растровых изображениях.
Допустимые размеры курсора зависят от аппаратного обеспечения дисплея (или от базовой системы окон). Рекомендуется использовать курсоры размером 32x32, так как этот размер поддерживается на всех платформах. Некоторые платформы также поддерживают курсоры размером 16x16, 48x48 и 64x64.
См. также QBitmap::QBitmap() и QBitmap::setMask().
QCursor::QCursor(const QPixmap &pixmap, int hotX = -1, int hotY = -1)
Создаёт пользовательский курсор на основе изображения.
pixmap – это изображение. Обычно для него задаётся маска (с помощью QPixmap::setMask()). hotX и hotY определяют точку «горячей» области курсора.
Если hotX отрицательно, он устанавливается в значение pixmap().width()/2. Если hotY отрицательно, он устанавливается в значение pixmap().height()/2.
Допустимые размеры курсора зависят от аппаратного обеспечения дисплея (или от базовой системы окон). Рекомендуется использовать курсоры размером 32x32, так как этот размер поддерживается на всех платформах. Некоторые платформы также поддерживают курсоры размером 16x16, 48x48 и 64x64.
См. также QPixmap::QPixmap() и QPixmap::setMask().
QCursor::QCursor(const QCursor &c)
Создаёт копию курсора c.
QCursor::QCursor(QCursor &&other)
Создаёт курсор путём перемещения из other. После перемещения единственные допустимые операции над other — это уничтожение и (перемещение и копирование) присваивание. Эффекты вызова любой другой функции члена над перемещённым экземпляром не определены.
Эта функция была добавлена в Qt 5.5.
QCursor::~QCursor()
Уничтожает курсор.
const QBitmap *QCursor::bitmap() const
Возвращает растровое изображение курсора, или 0, если это один из стандартных курсоров.
QPoint QCursor::hotSpot() const
Возвращает точку «горячей» области курсора, или (0, 0), если это один из стандартных курсоров.
const QBitmap *QCursor::mask() const
Возвращает маску растрового изображения курсора, или 0, если это один из стандартных курсоров.
QPixmap QCursor::pixmap() const
Возвращает изображение курсора. Это допустимо только для курсора на основе изображения.
[static] QPoint QCursor::pos()
Возвращает позицию курсора (точки «горячей» области) на главном экране в глобальных координатах экрана.
Вы можете использовать QWidget::mapFromGlobal() для преобразования в координаты виджета.
Примечание: Позиция запрашивается у системы окон. Если события мыши генерируются другими средствами (например, через QWindowSystemInterface в модульном тесте), эти фиктивные перемещения мыши не будут отражаться в возвращаемом значении.
Примечание: На платформах, где нет системы окон или курсоры недоступны, возвращаемая позиция основана на событиях перемещения мыши, сгенерированных через QWindowSystemInterface.
См. также setPos(), QWidget::mapFromGlobal(), QWidget::mapToGlobal() и QGuiApplication::primaryScreen().
[static] QPoint QCursor::pos(const QScreen *screen)
Возвращает позицию курсора (точки «горячей» области) на экране screen в глобальных координатах экрана.
Вы можете использовать QWidget::mapFromGlobal() для преобразования в координаты виджета.
См. также setPos(), QWidget::mapFromGlobal() и QWidget::mapToGlobal().
[static] void QCursor::setPos(int x, int y)
Перемещает курсор (точку «горячей» области) главного экрана в глобальную позицию экрана (x, y).
Вы можете использовать QWidget::mapToGlobal() для преобразования координат виджета в глобальные координаты экрана.
См. также pos(), QWidget::mapFromGlobal(), QWidget::mapToGlobal() и QGuiApplication::primaryScreen().
[static] void QCursor::setPos(QScreen *screen, int x, int y)
Перемещает курсор (точку «горячей» области) экрана screen в глобальную позицию экрана (x, y).
Вы можете использовать QWidget::mapToGlobal() для преобразования координат виджета в глобальные координаты экрана.
Примечание: Вызов этой функции приводит к изменению позиции курсора через систему окон. Система окон, как правило, реагирует, отправляя события мыши окну приложения. Это означает, что использование этой функции следует избегать в модульных тестах и везде, где генерируются фиктивные события мыши через QWindowSystemInterface, так как состояние мыши в системе окон (например, состояние кнопок) может не совпадать со состоянием событий, генерируемых приложением.
Примечание: На платформах, где нет системы окон или курсоры недоступны, эта функция может ничего не делать.
См. также pos(), QWidget::mapFromGlobal() и QWidget::mapToGlobal().
[static] void QCursor::setPos(const QPoint &p)
Это перегруженная функция.
Перемещает курсор (точку «горячей» области) в глобальную позицию экрана в точке p.
[static] void QCursor::setPos(QScreen *screen, const QPoint &p)
Это перегруженная функция.
Перемещает курсор (точку «горячей» области) экрана screen в глобальную позицию экрана в точке p.
void QCursor::setShape(Qt::CursorShape shape)
Устанавливает форму курсора, заданную значением shape.
См. Qt::CursorShape для списка форм курсора.
См. также shape().
Qt::CursorShape QCursor::shape() const
Возвращает идентификатор формы курсора. Возвращаемое значение — одно из значений перечисления Qt::CursorShape (преобразованное к типу int).
См. также setShape().
void QCursor::swap(QCursor &other)
Меняет курсоры этим и other.
QVariant QCursor::operator QVariant() const
Возвращает курсор в виде QVariant.
QCursor &QCursor::operator=(const QCursor &c)
Присваивает c этому курсору и возвращает ссылку на этот курсор.
QCursor &QCursor::operator=(QCursor &&other)
Перемещает присваивание other этому экземпляру QCursor.
Эта функция была добавлена в Qt 5.2.
END_OF_DOCUMENT_MARKERСвязанные не члены
bool operator!=(const QCursor &lhs, const QCursor &rhs)
Оператор неравенства. Возвращает эквивалент !(lhs == rhs).
Эта функция была представлена в Qt 5.10.
См. также operator==(const QCursor &lhs, const QCursor &rhs).
QDataStream &operator<<(QDataStream &stream, const QCursor &cursor)
Записывает cursor в stream.
См. также Сериализация типов данных Qt.
bool operator==(const QCursor &lhs, const QCursor &rhs)
Оператор равенства. Возвращает true если у lhs и rhs одинаковая shape() и, в случае курсоров-растровых изображений, одинаковый hotSpot(), а также либо одинаковый pixmap(), либо одинаковый bitmap() и mask().
Примечание: При сравнении растровых курсоров эта функция сравнивает только ключи кэша растровых изображений, а не каждый пиксель.
Эта функция была представлена в Qt 5.10.
См. также operator!=(const QCursor &lhs, const QCursor &rhs).
QDataStream &operator>>(QDataStream &stream, QCursor &cursor)
Читает cursor из stream.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qcursor.html