Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: IGHOR от Декабря 23, 2007, 01:37



Название: Пользовательский курсор мышки
Отправлено: IGHOR от Декабря 23, 2007, 01:37
Можно както задать курсор мышки из QPixmap(200,200) например ?
или как сделать анимацию нажатия мышки на проге поверх всех виджетов ?


Название: Re: Пользовательский курсор мышки
Отправлено: ритт от Декабря 23, 2007, 02:22
Цитировать
QCursor::QCursor ( const QPixmap & pixmap, int hotX = -1, int hotY = -1 )
Constructs a custom pixmap cursor.
pixmap is the image. It is usual to give it a mask (set using QPixmap::setMask()). hotX and hotY define the cursor's hot spot.
If hotX is negative, it is set to the pixmap().width()/2. If hotY is negative, it is set to the pixmap().height()/2.
Valid cursor sizes depend on the display hardware (or the underlying window system). We recommend using 32 x 32 cursors, because this size is supported on all platforms. Some platforms also support 16 x 16, 48 x 48, and 64 x 64 cursors.

> или как сделать анимацию нажатия мышки на проге поверх всех виджетов ?
/* крайне бестолковая формулировка. попробуй понажимать на мышку - она анимирует?! и как должна реагировать при этом "прога"? */

т.к. курсор из пиксмапа 200х200рх создать не удастся, но тебе очень надо, создай из полностью прозрачного пиксмапа 32х32рх свой курсор, создай лабел и поставь ему родителем виндов() или виджет, над которым твой кастомный курсор должен бегать, установи на этот лабел пиксмап 200х200рх, а у родительского виджета переопредели моусемуве/моусепрессед/моусерелизед, которые и будут соответственно реагировать, двигая лабел и т.п.

довольно извращённо, но зато можно поставить не пнгшку, а анимированную гифку, например, на нажатие кнопки мыши


Название: Re: Пользовательский курсор мышки
Отправлено: IGHOR от Декабря 23, 2007, 02:40
Прога будет под точскрином.
Мышка будет прозрачной.
а при прикосновение на кнопке будет красивая анимация капли воды :)
Хотелось бы еще это реализовать :)
xep, Про лабел спасибо! так и сделаю.
А еще вопрос. ХОтелось бы чтобы эта капля была похожей на настоящюю каплю :)
тоисть чтобы выгибала все что под ней.
Это просто ? или без опенжл не обойтись ?


Название: Re: Пользовательский курсор мышки
Отправлено: IGHOR от Декабря 23, 2007, 03:04
Код:
довольно извращённо, но зато можно поставить не пнгшку, а анимированную гифку, например, на нажатие кнопки мыши
А как гиф поставить в отображение ?


Название: Re: Пользовательский курсор мышки
Отправлено: ритт от Декабря 23, 2007, 03:05
эффект стекла, помнится, делали даже на акшенскрипте втором...с шариком или каплей будет несколько сложнее. т.к. искажение картинки должно быть неравномерным
можно обойтись без опенжл, если процессор не слишком медленный и видеоадаптер не интегрированный и не слишком старый
как минимум два варианта:
1. обсчитывать положение пикселя на поверхности полусферы, исходя для простоты из принципов, что вектор взгляда на полусферу всегда перпендикулярен плоскости её сечения и "глаз" всегда равноудалён от этой самой плоскости сечения, а источник света, например, сам "глаз". при этом, искажения цвета в зависимости от положения пикселя на поверхности полусферы можно отбросить (можно и не отбрасывать, а обсчитывать по упрощённой формуле), и шаг для узлов, из которых будет состоять полусфера должен быть меньше градуса (чем меньше, тем лучше) - чтобы не появлялись "слепые пятна"
2. создать в фотожопе 24-разрядную пнгшку с альфа-слоём, на которой нарисовать круговой градиент из белого в прозрачный, заливаемый по косинусоиде...или воспользоваться стандартной тулзой "пузырь" на полу-прозрачном белом слое

но мне почему-то кажется, что юзверю это нах не надо :)


Название: Re: Пользовательский курсор мышки
Отправлено: ритт от Декабря 23, 2007, 03:06
Код:
довольно извращённо, но зато можно поставить не пнгшку, а анимированную гифку, например, на нажатие кнопки мыши
А как гиф поставить в отображение ?

с анимацией гифки я, возможно, переборщил...не знаю, пока что не было такой потребности


Название: Re: Пользовательский курсор мышки
Отправлено: IGHOR от Декабря 23, 2007, 03:48
Спасибо, Админ  ;) . Чтото придумаю


Название: Re: Пользовательский курсор мышки
Отправлено: IGHOR от Января 08, 2008, 00:13
Цитировать
QCursor::QCursor ( const QPixmap & pixmap, int hotX = -1, int hotY = -1 )
Constructs a custom pixmap cursor.
pixmap is the image. It is usual to give it a mask (set using QPixmap::setMask()). hotX and hotY define the cursor's hot spot.
If hotX is negative, it is set to the pixmap().width()/2. If hotY is negative, it is set to the pixmap().height()/2.
Valid cursor sizes depend on the display hardware (or the underlying window system). We recommend using 32 x 32 cursors, because this size is supported on all platforms. Some platforms also support 16 x 16, 48 x 48, and 64 x 64 cursors.

> или как сделать анимацию нажатия мышки на проге поверх всех виджетов ?
/* крайне бестолковая формулировка. попробуй понажимать на мышку - она анимирует?! и как должна реагировать при этом "прога"? */

т.к. курсор из пиксмапа 200х200рх создать не удастся, но тебе очень надо, создай из полностью прозрачного пиксмапа 32х32рх свой курсор, создай лабел и поставь ему родителем виндов() или виджет, над которым твой кастомный курсор должен бегать, установи на этот лабел пиксмап 200х200рх, а у родительского виджета переопредели моусемуве/моусепрессед/моусерелизед, которые и будут соответственно реагировать, двигая лабел и т.п.

довольно извращённо, но зато можно поставить не пнгшку, а анимированную гифку, например, на нажатие кнопки мыши

По вашему советю юзал такой способ. ПОд виндой все Супер! Перекинул все исходники в Линукс
при анимации лабел постоянно моргает белым фоном.
На чем еще можна рисовать анимацию ?