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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: содержание родительского виджета  (Прочитано 6175 раз)
jasf
Гость
« : Октябрь 19, 2009, 10:38 »

Здравствуйте. Хочется следующего. Есть, получается, backgroundWidget. Улыбающийся В нём есть дочерние виджеты (ну или лайоуты..). И хочется, что бы, когда я перерисовываю дочерний виджет (допустим вывожу полупрозрачный QImage), данный QImage рисовался поверх содержания отцовского виджета, которое является графическим. Ну т.е. полупрозрачная картинка поверх просто картинки( которая отображается в backgroundWidget::painterEvent.) Спасибо Улыбающийся
P.S. только читаю книгу по Qt.. до каскадных стилей ещё не дошёл )
Записан
SABROG
Гость
« Ответ #1 : Октябрь 19, 2009, 12:10 »

Нарисуй в пейнте как ты себе это представляешь, из описания я ничего не понял.
Записан
jasf
Гость
« Ответ #2 : Октябрь 19, 2009, 13:23 »

ну вот приблизительно:
возьмём левое изображение = 1
правое = 2

предположим, что первое изображение - это просто splashscreen, хранящийся в QImage. НУ т.е. без логических элементов. За отображение данного элемента отвечает
MyWidget backgroundWidget;
..
MyWidget::painterEvent()
{
QPainter painter(this);
painter.draw(image);
}


в последствии, я в backgroundWidget вкладываю дочерний виджет. пусть этим виджетом будет квадрат, содержащийся на 2ом рисунке (там где подкл-откл, .. Выход ). Опять же, данный квадрат (на рисунке выглядит как меню...) пусть будет являться вторым изображением, хранящимся в QImage. Так вот, я хочу во втором, дочернем виджете, отрисовать QImage с указанием альфа величины.. что-бы на выходе получил примерно то, что показано на рисунке. Т.е. смешать содержание backgroundWidget и дочернего виджета. Т.е. посути, перед тем, как произойдёт отрисовка дочернего виджета, backgroundWidget должен восстановить своё содержимое в QPainter дочернего виджета.. как то-так.
Записан
jasf
Гость
« Ответ #3 : Октябрь 19, 2009, 13:33 »

Или вот на этом изображении лучше понятно. Тот полупрозрачный затемнённый виджет находится над списком контактов. Хоть и является полупрозрачным. А так же является виджетом. Вот как реализовать похожий функционал? Улыбающийся Спасибо
Записан
SABROG
Гость
« Ответ #4 : Октябрь 19, 2009, 14:40 »

Типа этого?
Записан
jasf
Гость
« Ответ #5 : Октябрь 19, 2009, 15:06 »

За ссылку спасибо. Но хочется, наверное, не просто рисование "руками", а что-бы поверх был именно widget со свойствами полупрозрачности. Хотя, видимо, мне поможет qt 4.6 beta1. там нечто похожее вроде-как есть.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Октябрь 19, 2009, 15:29 »

Если бы каждый кто делает полу/прозрачность "подручными средствами" просто написал бы в Qt такой feature request - то глядишь в следующей версии и имели бы что-то штатное (вместо бестолковых Crerator'ов)   Улыбающийся
Записан
baka
Гость
« Ответ #7 : Октябрь 19, 2009, 17:42 »

при рисовании дочернего виджета, попробуй в QPainter задавать Opacity

Код:
QPainter painter(this);
painter.setOpacity(n);

painter.setBrush(QColor(133, 164, 214,  200));
painter.setPen(QColor(133, 164, 214,  255));

где n - от 0.0 до 1.0

получится примерно как на рисунке.

ЗЫ: т.е. если я правильно понял тебе нужен полупрозрачный виджет который может находится где угодно и сквозь который видно все что под ним.(т.е. другие виджеты или рабочий стол.
« Последнее редактирование: Октябрь 19, 2009, 17:48 от baka » Записан
SASA
Гость
« Ответ #8 : Октябрь 19, 2009, 18:20 »

Если виджет чилдовый (т.е. имеет парента) то просто рисуй полупрозрачными Веселый красками.
Для топ левел виджетов используй свойство windowOpacity.
Записан
Marat(Qt)
Гость
« Ответ #9 : Октябрь 19, 2009, 21:01 »

Вот кнопку прозрачную сделал... палитру потправил просто...
Записан
spectre71
Гость
« Ответ #10 : Октябрь 20, 2009, 07:02 »

За ссылку спасибо. Но хочется, наверное, не просто рисование "руками", а что-бы поверх был именно widget со свойствами полупрозрачности. Хотя, видимо, мне поможет qt 4.6 beta1. там нечто похожее вроде-как есть.

void QWidget::setWindowOpacity ( qreal level )
Записан
jasf
Гость
« Ответ #11 : Октябрь 21, 2009, 11:53 »

За ссылку спасибо. Но хочется, наверное, не просто рисование "руками", а что-бы поверх был именно widget со свойствами полупрозрачности. Хотя, видимо, мне поможет qt 4.6 beta1. там нечто похожее вроде-как есть.

void QWidget::setWindowOpacity ( qreal level )

Спасибо, обязательно проверю

Вот кнопку прозрачную сделал... палитру потправил просто...
вот если-бы ещё пример исходного кода  Улыбающийся
Записан
Marat(Qt)
Гость
« Ответ #12 : Октябрь 22, 2009, 12:49 »

Цитировать
вот если-бы ещё пример исходного кода
исходного кода у меня нет... у каждого виджета есть своя палитра, я редактировал ее в дизайнере. Берем ассистант и читаем про QPalette, а еще проще прочитать у Шлее (глава 13, страница 264)...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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