Класс 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, а другие будут использовать внутренний битовый курсор.
| Форма | 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.
Биты курсовой bitmap (B) и mask (M) комбинируются следующим образом:
- B=1 и M=1 даёт чёрный цвет.
- B=0 и M=1 даёт белый цвет.
- B=0 и M=0 даёт прозрачный цвет.
- B=1 и M=0 даёт XOR-результат в Windows, неопределённый результат на всех других платформах.
Для рисования 0-пикселей используйте глобальный цвет Qt Qt::color0, а для рисования 1-пикселей — Qt::color1.
Допустимые размеры курсора зависят от аппаратного обеспечения дисплея (или от системной подсистемы окон). Рекомендуется использовать курсоры размером 32x32, так как этот размер поддерживается на всех платформах. Некоторые платформы также поддерживают курсоры размером 16x16, 48x48 и 64x64.
См. также QBitmap::QBitmap() и QBitmap::setMask().
QCursor::QCursor(Qt::CursorShape shape)
Конструирует курсор с заданной формой 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
Возвращает идентификатор формы курсора. Возвращаемое значение — одно из значений перечисления Qt::CursorShape (приведено к типу int).
См. также 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.0/qcursor.html