Прозрачность курсора мыши Qt - PullRequest
4 голосов
/ 02 июня 2011

Я бы хотел изменить стандартный курсор на полупрозрачный простой закрашенный круг разных размеров в зависимости от уровня масштабирования в базовом виджете (скажем, RGBA = 200, 200, 200, 128).

Это вообще возможно с Qt? Если нет, то является ли это ограничением в Qt или базовых библиотеках? Есть ли у вас предложения относительно того, как это можно сделать другими способами, например, скрыть курсор и наложить прозрачное растровое изображение в позиции курсора (хотя и медленнее)? ТИА

Ответы [ 2 ]

1 голос
/ 04 июня 2011

Я только что понял это для собственного проекта.Я сделал это с помощью этого кода в конструкторе соответствующего виджета:

m_LPixmap = new QPixmap(32,32);
m_LPixmap->fill(Qt::transparent); // Otherwise you get a black background :(
QPainter painter(m_LPixmap);
QColor red(255,0,0,128);

painter.setPen(Qt::NoPen);        // Otherwise you get an thin black border
painter.setBrush(red);

painter.drawEllipse(0,0,32,32);
m_Cursor = QCursor(*m_LPixmap);
setCursor(m_Cursor);
1 голос
/ 02 июня 2011

QCursor может взять QPixmap, который поддерживает альфа-канал. Поэтому я не понимаю, почему это невозможно.

...