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

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

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

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

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

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

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

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

Курсоры:


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

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    // Создаём курсор цели из ресурсного файла
    QCursor cursorTarget = QCursor(QPixmap(":/cursor/cursorTarget.png"));
    ui->graphicsView->setCursor(cursorTarget); // Устанавливаем курсок цели

    /* Создаём курсор (Красная стрелка) и
     * сдвигаем горячую точку курсора на позици x = 0 y = 0
     * */
    QCursor cursorRed = QCursor(QPixmap(":/cursor/cursorArrowRed.png"), 0, 0);
    this->setCursor(cursorRed); // Устанавливаем курсор

    /* Создаём курсор (Зеленая стрелка) и
     * сдвигаем горячую точку курсора на позици x = 0 y = 0
     * */
    QCursor cursorGreen = QCursor(QPixmap(":/cursor/cursorArrowGreen.png"),0,0);
    ui->pushButton->setCursor(cursorGreen);     // Устанавливаем курсор
    ui->pushButton_2->setCursor(cursorGreen);   // Устанавливаем курсор
}

Widget::~Widget()
{
    delete ui;
}

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

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

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

Комментарии

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

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50баллов,
  • Очки рейтинга-4
m
  • molni99
  • 26 октября 2024 г. 8:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80баллов,
  • Очки рейтинга4
m
  • molni99
  • 26 октября 2024 г. 8:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20баллов,
  • Очки рейтинга-10
Последние комментарии
i
innorwall12 ноября 2024 г. 5:12
Django - Урок 055. Как написать функционал auto populate field Freckles because of several brand names retin a, atralin buy generic priligy
i
innorwall12 ноября 2024 г. 1:23
QML - Урок 035. Использование перечислений в QML без C++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
i
innorwall11 ноября 2024 г. 22:50
Qt/C++ - Урок 052. Кастомизация Qt Аудио плеера в стиле AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
i
innorwall11 ноября 2024 г. 21:19
Алгоритм сортировки кучей The role of raloxifene in preventing breast cancer priligy precio
i
innorwall11 ноября 2024 г. 20:55
PyQt5 - Урок 006. Работа с QTableWidget buy priligy 60 mg 53 have been reported by Javanovic Santa et al
Сейчас обсуждают на форуме
i
innorwall12 ноября 2024 г. 3:56
добавить qlineseries в функции buy priligy senior brother Chu He, whom he had known for many years
i
innorwall11 ноября 2024 г. 17:55
Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
9
9Anonim25 октября 2024 г. 16:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Игорь Максимов3 октября 2024 г. 11:05
Реализация навигации по разделам Спасибо Евгений!

Следите за нами в социальных сетях