Evgenii Legotckoi
27 сентября 2015 г. 21:11

Qt/C++ - Урок 022. Как изменить курсор мыши в Qt

Задача "Кастомизировать курсор в программе" встаёт перед программистом тогда, когда этого требует дизайн программы, или идёт разработка игрового ПО, и это становится уже вопросом дизайна и атмосферы игры.

Кастомизация курсора в Qt является тривиальной задачей, в которую входит лишь установка собственного курсора для каждого визуального объекта, который присутствует в игре или программе. При наведении на этот объект, курсор изменяет свой внешний вид в соответствии с тем изображением, которое было установлено в объект в качестве курсора .

В проекте Qt по умолчанию, окно в котором унаследовано от QWidget даже нет необходимости подключать дополнительных заголовочных файлов. Всё, что нужно сделать - это создать объект класса QCursor с помощью QPixmap из ресурсного файла.

В качестве ресурсных файлов необходимо создать изображения курсоров с расширением PNG и размерами 32х32 пикселей. Этот размер является рекомендованным в документации по Qt, поскольку он является повсеместно поддерживаемым.

В данном примере используется три изображения курсоров:

  • cursorTarget.png - данный курсор будет использоваться в области QGraphicsView;
  • cursorArrowRed.png - данный курсор будет использоваться в области окна в целом;
  • cursorArrowGreen.png - данный курсор будет использоваться в области кнопки.

Курсоры:


Изменяем курсор

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3.  
  4. Widget::Widget(QWidget *parent) :
  5. QWidget(parent),
  6. ui(new Ui::Widget)
  7. {
  8. ui->setupUi(this);
  9.  
  10. // Создаём курсор цели из ресурсного файла
  11. QCursor cursorTarget = QCursor(QPixmap(":/cursor/cursorTarget.png"));
  12. ui->graphicsView->setCursor(cursorTarget); // Устанавливаем курсок цели
  13.  
  14. /* Создаём курсор (Красная стрелка) и
  15. * сдвигаем горячую точку курсора на позици x = 0 y = 0
  16. * */
  17. QCursor cursorRed = QCursor(QPixmap(":/cursor/cursorArrowRed.png"), 0, 0);
  18. this->setCursor(cursorRed); // Устанавливаем курсор
  19.  
  20. /* Создаём курсор (Зеленая стрелка) и
  21. * сдвигаем горячую точку курсора на позици x = 0 y = 0
  22. * */
  23. QCursor cursorGreen = QCursor(QPixmap(":/cursor/cursorArrowGreen.png"),0,0);
  24. ui->pushButton->setCursor(cursorGreen); // Устанавливаем курсор
  25. ui->pushButton_2->setCursor(cursorGreen); // Устанавливаем курсор
  26. }
  27.  
  28. Widget::~Widget()
  29. {
  30. delete ui;
  31. }

Демонстрация работы курсора

Рекомендуемые статьи по этой тематике

По статье задано1вопрос(ов)

0

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь