Класс QCursor
Класс QCursor предоставляет курсор мыши с произвольной формой. Подробнее...
| Заголовок: | #include <QCursor> |
| qmake: | QT += gui |
Открытые функции
| QCursor(QCursor &&other) | |
| QCursor(const QCursor &c) | |
| QCursor(const QPixmap &pixmap, int hotX = -1, int hotY = -1) | |
| QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX = -1, int hotY = -1) | |
| QCursor(Qt::CursorShape shape) | |
| QCursor() | |
| QCursor & | operator=(QCursor &&other) |
| QCursor & | operator=(const QCursor &c) |
| ~QCursor() | |
| QBitmap | bitmap(Qt::ReturnByValueConstant) const |
| QPoint | hotSpot() const |
| QBitmap | mask(Qt::ReturnByValueConstant) const |
| QPixmap | pixmap() const |
| void | setShape(Qt::CursorShape shape) |
| Qt::CursorShape | shape() const |
| void | swap(QCursor &other) |
| QVariant | operator QVariant() const |
Статические открытые члены
| 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) |
Подробное описание
Этот класс в основном используется для создания курсоров мыши, связанных с определенными виджетами, и для получения и установки положения курсора мыши.
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 &&other)
Перемещающее создание курсора из other. После перемещения единственные допустимые операции над other — это уничтожение и (перемещение и копирование) присваивание. Эффекты вызова любой другой функции-члена над перемещённым экземпляром не определены.
Функция была добавлена в Qt 5.5.
QCursor::QCursor(const QCursor &c)
Создаёт копию курсора c.
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 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(Qt::CursorShape shape)
Создаёт курсор с указанной формой shape.
См. Qt::CursorShape для списка форм.
См. также setShape().
QCursor::QCursor()
Создаёт курсор со стандартной стрелочной формой.
QCursor &QCursor::operator=(QCursor &&other)
Перемещающее присваивание other этому экземпляру QCursor.
Функция была добавлена в Qt 5.2.
QCursor &QCursor::operator=(const QCursor &c)
Присваивает c этому курсору и возвращает ссылку на этот курсор.
QCursor::~QCursor()
Уничтожает курсор.
QBitmap QCursor::bitmap(Qt::ReturnByValueConstant) const
Возвращает битовую карту курсора или пустую битовую карту, если это один из стандартных курсоров.
Ранее Qt предоставлял версию bitmap() , которая возвращала битовую карту по указателю. Эта версия теперь устарела. Для сохранения совместимости со старым кодом можно явно различать функцию по указателю и функцию по значению:
const QBitmap *bmpPtr = cursor->bitmap(); QBitmap bmpVal = cursor->bitmap(Qt::ReturnByValue);
Если вы отключите устаревшую версию, используя макрос QT_DISABLE_DEPRECATED_BEFORE, то вы можете опустить Qt::ReturnByValue , как показано ниже:
QBitmap bmpVal = cursor->bitmap();
Функция была добавлена в Qt 5.15.
QPoint QCursor::hotSpot() const
Возвращает точку фокуса курсора или (0, 0), если это один из стандартных курсоров.
QBitmap QCursor::mask(Qt::ReturnByValueConstant) const
Возвращает битовую маску курсора или пустую битовую карту, если это один из стандартных курсоров.
Ранее Qt предоставлял версию mask() , которая возвращала битовую карту по указателю. Эта версия теперь устарела. Для сохранения совместимости со старым кодом можно явно различать функцию по указателю и функцию по значению:
const QBitmap *bmpPtr = cursor->mask(); QBitmap bmpVal = cursor->mask(Qt::ReturnByValue);
Если вы отключите устаревшую версию, используя макрос QT_DISABLE_DEPRECATED_BEFORE, то вы можете опустить Qt::ReturnByValue , как показано ниже:
QBitmap bmpVal = cursor->mask();
Функция была добавлена в Qt 5.15.
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.
Эта функция была добавлена в Qt 5.7.
QVariant QCursor::operator QVariant() const
Возвращает курсор в виде QVariant.
Связанные нечлены
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().
Примечание: При сравнении растровых курсоров эта функция сравнивает только ключи кэширования cache keys растровых изображений, а не каждый пиксель.
Эта функция была добавлена в 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/qt-5.15/qcursor.html