Russian Qt Forum
Октябрь 02, 2024, 09:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [QT 4.2.2] Прозрачное окно с текстом  (Прочитано 4398 раз)
Осенний дождь
Гость
« : Апрель 26, 2007, 14:11 »

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

Пробовал сделать такое через setMask(QRegion) у основного окна
Код:
QRegion reg = childrenRegion();
setMask(reg);

Виден фон QLabel.
Код:
QPalette p = ui.label->palette();
p.setBrush(QPalette::Window,QBrush(QColor(255,255,255,0)));
ui.label->setAutoFillBackground(true);
ui.label->setPalette(p);

Теперь сквозь фон прозрачный фон QLabel виден фон основного окна. А его сделать прозрачным не получается, т.к. фон становиться не прозрачным, а черным. (Вероятно это потому, что окно сначала рисуется в буфер, а потом буфер копируется на экран. И промежуточный буфер по умолчанию заполнен черным цветом)

Тогда я попробовал сделать через setMask(QBitmap) , но для этого мне нужно сначала нарисовать окно в буфер, потом из этого буфер получить маску и наложить ее на окно. Но как нарисовать мое основное окно, вместе с дочерними виджетами в буфер, а не на экран?

Короче, мрак.
Записан
epazzz
Гость
« Ответ #1 : Май 07, 2007, 18:29 »

при копировании Pixmapa в промежуточный буфер теряется маска.
Чтобы это избежать делай следующее:

1. берёшь маску оригинального изображения
QBitmap *mask=(QBitmap *)iProperties.iPixmap.mask();
2. копируешь оригинальный pixmap куда надо
bitBlt(pixmap, 0,0, &(iProperties.iPixmap))
3. востанавливаешь маску
pixmap->setMask(mask);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.14 секунд. Запросов: 20.