crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Прозрачнойсть вокруг виджетов необычной формы
edwardoid
  опции профиля:
сообщение 29.9.2010, 8:55
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


идея проста нужно нарисовать нечто такое:


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

Сообщение отредактировал edwardoid - 29.9.2010, 8:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.9.2010, 9:02
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2928
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


QRegion в помощь

заливаешь окно чёрным, рисуешь круги (по заранее созданным для них регионам), там же размещаешь кнопки. При клике по окну проверяешь, лежит ли точка в регионе или нет - дальше по логике :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 29.9.2010, 9:09
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 29.9.2010, 11:02) *
QRegion в помощь

заливаешь окно чёрным, рисуешь круги (по заранее созданным для них регионам), там же размещаешь кнопки. При клике по окну проверяешь, лежит ли точка в регионе или нет - дальше по логике :)

Мне нужно чтобы черная зона была прозрачной! плюс круги(пример) в моем случае это круг и растягивающийся прямоугольник с динамичным изменением виджетов в нем(прямоугольнике), плюс на каждый виджет будет стоять свой style


Нужно нечто вроде меню в Windows 7 , но чтоб кнопка Start была круглой


Сообщение отредактировал edwardoid - 29.9.2010, 9:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.9.2010, 9:16
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2928
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


edwardoid, посмотри тогда эту тему http://www.forum.crossplatform.ru/index.php?showtopic=5533

я там делал как раз такую фигню. Только у меня поверх ложились PNG , а тебе нужно с регионами закраску в нужном месте делать

Цитата(edwardoid @ 29.9.2010, 12:09) *
Нужно нечто вроде меню в Windows 7 , но чтоб кнопка Start была круглой

- это мне ничего не говорит ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 29.9.2010, 9:17
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


У меня тоже пнг и виджеты будут там, где закрашено непрозрачной частью пнг
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.9.2010, 9:19
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2928
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


в твоём случае PNG как бы и не требуется, разве что хочешь фон нарисовать картиночный
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 29.9.2010, 9:21
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Он картиночный по любому, там фон важный закрасить или нарисовать не вариант, потому придется картинку ставить..


Пример Каспера пашет, только как убрать виджет, когда кликнули по пустому месту?

Сообщение отредактировал edwardoid - 29.9.2010, 9:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.9.2010, 9:24
Сообщение #8


фрилансер
******

Группа: Участник
Сообщений: 2928
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Кстати, с регионами таки универсальнее будет - а для фона так же сможешь регионом обрезать PNG потом и подложить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 29.9.2010, 9:31
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не понял. Как понять "подрезать"? У меня динамически удлиняется прямоугольник.


Вот полная структура результата.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.9.2010, 9:44
Сообщение #10


фрилансер
******

Группа: Участник
Сообщений: 2928
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


вот так
Цитата
void QPainter::setClipRegion ( const QRegion & region, Qt::ClipOperation operation = Qt::ReplaceClip )
Sets the clip region to the given region using the specified clip operation. The default clip operation is to replace the current clip region.

Note that the clip region is given in logical coordinates.

See also clipRegion(), setClipRect(), and Clipping.

и хочь там что динамическое :) Правда, сам это под Qt не пробовал (ищу аналогию с WinAPI). Заодно и расскажешь ))

А зачем определять "на какой суб-виджет попал", пусть контролы сами обрабатывают клики
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.1.2022, 3:57