Класс 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() | |
| 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 |
Статические открытые члены
| 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 и Руководство по разработке GUI: Курсоры.
Документация по функциям-членам
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()
Уничтожает курсор.
const QBitmap *QCursor::bitmap() const
Возвращает битовую карту курсора или nullptr если это один из стандартных курсоров.
QPoint QCursor::hotSpot() const
Возвращает точку «горячей» зоны курсора или (0, 0), если это один из стандартных курсоров.
const QBitmap *QCursor::mask() const
Возвращает маску битовой карты курсора или nullptr если это один из стандартных курсоров.
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.
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 одинаковая форма и, в случае курсоров-растровых изображений, одинаковый 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/qt-5.14/qcursor.html