Изменение указателя мыши

   
На этом шаге рассмотрим изменение вида указателя мыши.

   
Класс указателя (курсора) мыши QCursor определен в файле QCursor (#include <QCursor>, qmake: QT += gui).

   
Указатель представляет собой небольшую растровую картинку, информирующую пользователя о позиции мыши на экране. В зависимости от местоположения, внешний вид указателя может меняться. В большинстве случаев это стрелка, но при попадании на границу окна он может превратиться в двунаправленную стрелку, информируя пользователя, что размеры окна могут быть изменены.

   
Установить изображение указателя можно методом setCursor(), передав ему одно из указанных в табл. 1 значений.

Таблица 1. Значения CursorShape пространства имен Qt

Вид Значение Описание
Qt::ArrowCursor Стандартный указатель стрелки, появляется поверх большинства виджетов. Служит для указания, выбора или перемещения мыши
Qt::UpArrowCursor Стрелка показывающая вверх. Применение этого указателя зависит от конкретной ситуации
Qt::CrossCursor Крестообразный указатель используется для выделения прямоугольных областей. Может появиться над любым виджетом, допускающим эту операцию
Qt::IBeamCursor I-образный текстовый указатель (I-beam cursor) представляет собой вертикальную линию. Появляется над текстом для изменения, выбора и перемещения
Qt::WaitCursor Указатель ожидания, появляется над любым виджетом или позицией при выполнении операции в фоновом режиме
Qt::ForbiddenCursor Указатель невозможности входа, появляется над объектом-приемником при проведении операций перетаскивания, сигнализируя о том, что принимающая сторона не в состоянии принять перетаскиваемый объект
Qt::PointingHandCursor Указатель в виде руки появляется над гипертекстовыми ссылками
Qt::WhatsThisCursor Указатель с вопросом, появляется поверх большинства виджетов для получения контекстно-зависимой помощи
Qt::SizeVerCursor Указатель изменения вертикального размера окна. Появляется поверх регулируемой границы окна
Qt::SizeHorCursor Указатель изменения горизонтального размера окна. Появляется поверх регулируемой границы окна
Qt::SizeBDiagCursor Указатель изменения размеров окна по диагонали. Появляется поверх регулируемой границы окна
Qt::SizeFDiagCursor Указатель изменения размеров окна по диагонали. Появляется поверх регулируемой границы окна
Qt::SizeAllCursor Указатель для изменения местоположения окна, сигнализирует о готовности окна быть перемещенным
Qt::SplitVCursor Указатель изменения высоты для разделенных виджетов, появляется над границей между двумя разделенными виджетами.
Qt::SplitHCursor Указатель изменения ширины для разделенных виджетов, появляется над границей между двумя разделенными виджетами.
Qt::OpenHandCursor Указатель в виде разжатой руки сигнализирует о возможности перемещения частей изображения в видимой области
Qt::ClosedHandCursor Указатель в виде сжатой руки сигнализирует о готовности перемещения частей изображения в видимой области

Примечание. Вызов статического метода QApplication::setOverrideCursor() устанавливает изображение указателя для всего приложения. Это может понадобиться, например, для информирования пользователя о том, что приложение выполняет интенсивную, продолжительную по времени операцию и не в состоянии реагировать на команды. В этот момент все виджеты должны отображать указатель мыши в виде песочных часов, для чего вызывается метод QApplication::setOverrideCursor(Qt::WaitCursor). Когда приложение снова будет в состоянии выполнять команды пользователя, вызовом статического метода QApplication:: restoreOverrideCursor() указателю мыши возвращается его прежний вид.

   
В классе QCursor содержится метод pos(), который возвращает текущую позицию указателя мыши относительно левого верхнего угла экрана.

   
При помощи метода setPos() можно пе-ремещать указатель мыши.

   
Чтобы создать собственное изображение указателя мыши, нужны два растровых изображения типа QBitmap. Эти изображения должны иметь одинаковые размеры, а одно из них будет представлять собой битовую маску. В тех местах, на которых маска будет иметь цвет color1, будет нарисовано само изображение указателя, а в местах, где маска будет иметь цвет color0 — изображение будет прозрачно.

   
Более простой способ — это использование объекта класса QPixmap. Результат выполнения программы, показанный на рис. 1, демонстрирует эту возможность.


Рис.1. Использование собственного изображения для указателя мыши

   
Это приложение можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий