Класс QCursor
Класс QCursor предоставляет курсор мыши с произвольной формой. Подробнее...
| Заголовок: | #include <QCursor> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| 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() const |
| QPoint | hotSpot() 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, а другие будут использовать внутренний курсор битового изображения.
END_OF_DOCUMENT_MARKER| Форма | 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 и Руководство по проектированию пользовательского интерфейса: Курсоры.
Документация по функциям-членам
[since 5.5] QCursor::QCursor(QCursor &&other)
Конструктор перемещения курсора из 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)
Создаёт курсор с заданной формой.
Список форм см. в Qt::CursorShape.
См. также setShape().
QCursor::QCursor()
Создаёт курсор с формой по умолчанию — стрелкой.
[since 5.2] QCursor &QCursor::operator=(QCursor &&other)
Перемещающее присваивание other текущему экземпляру QCursor.
Эта функция была введена в Qt 5.2.
QCursor &QCursor::operator=(const QCursor &c)
Присваивает c текущему курсору и возвращает ссылку на этот курсор.
QCursor::~QCursor()
Уничтожает курсор.
QBitmap QCursor::bitmap() const
Возвращает битовую карту курсора или пустую битовую карту, если это стандартный курсор.
QPoint QCursor::hotSpot() const
Возвращает точку привязки курсора или (0, 0), если это стандартный курсор.
QBitmap QCursor::mask() const
Возвращает битовую маску курсора или пустую битовую карту, если это стандартный курсор.
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
Возвращает идентификатор формы курсора.
См. также setShape().
[since 5.7] void QCursor::swap(QCursor &other)
Меняет местами этот курсор с курсором other.
Эта функция была добавлена в Qt 5.7.
QVariant QCursor::operator QVariant() const
Возвращает курсор как QVariant.
Связанные нечлен-функции
[since 5.10] 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.
[since 5.10] bool operator==(const QCursor &lhs, const QCursor &rhs)
Оператор равенства. Возвращает true если lhs и rhs имеют одинаковую форму() и, в случае курсоров-растровых изображений, одинаковую горячую точку() и либо одинаковый 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-6.2/qcursor.html