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

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

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

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

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

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

ВидЗначениеОписание
Qt::ArrowCursorСтандартный указатель стрелки, появляется поверх большинства виджетов. Служит для указания, выбора или перемещения мыши
Qt::UpArrowCursorСтрелка показывающая вверх. Применение этого указателя зависит от конкретной ситуации
Qt::CrossCursorКрестообразный указатель используется для выделения прямоугольных областей. Может появиться над любым виджетом, допускающим эту операцию
Qt::IBeamCursorI-образный текстовый указатель (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. Использование собственного изображения для указателя мыши

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



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

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