Название: [QT 4.2.2] Прозрачное окно с текстом Отправлено: Осенний дождь от Апрель 26, 2007, 14:11 Добрый день, помоги с советом.
Нужно создать на рабочем столе окно которое выглядело бы как иконка Windows, т.е. На основном окне располагает кнопка с изображением, а под ней QLabel с текстом. Основное окно должно иметь прозрачный фон, так чтобы пользователю казалось бы что кнопка и текст QLabel находятся на рабочем столе сами по себе. Пробовал сделать такое через setMask(QRegion) у основного окна Код: QRegion reg = childrenRegion(); Виден фон QLabel. Код: QPalette p = ui.label->palette(); Теперь сквозь фон прозрачный фон QLabel виден фон основного окна. А его сделать прозрачным не получается, т.к. фон становиться не прозрачным, а черным. (Вероятно это потому, что окно сначала рисуется в буфер, а потом буфер копируется на экран. И промежуточный буфер по умолчанию заполнен черным цветом) Тогда я попробовал сделать через setMask(QBitmap) , но для этого мне нужно сначала нарисовать окно в буфер, потом из этого буфер получить маску и наложить ее на окно. Но как нарисовать мое основное окно, вместе с дочерними виджетами в буфер, а не на экран? Короче, мрак. Название: [QT 4.2.2] Прозрачное окно с текстом Отправлено: epazzz от Май 07, 2007, 18:29 при копировании Pixmapa в промежуточный буфер теряется маска.
Чтобы это избежать делай следующее: 1. берёшь маску оригинального изображения QBitmap *mask=(QBitmap *)iProperties.iPixmap.mask(); 2. копируешь оригинальный pixmap куда надо bitBlt(pixmap, 0,0, &(iProperties.iPixmap)) 3. востанавливаешь маску pixmap->setMask(mask); |