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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: transparent widget  (Прочитано 8596 раз)
vux
Гость
« : Февраль 12, 2012, 19:40 »

есть openGl виджет. Есть QLabel который расположен над ним. Вопрос
Как сделать чтобы QLabel отображался только как текст - без прямоугольного виджета - то есть прозрачный?
Записан
spirits25
Гость
« Ответ #1 : Февраль 13, 2012, 08:16 »

Попробуй
Код:
image_lbl.setAttribute(QtCore.Qt.WA_NoSystemBackground)
это в сях примерно
Код:
image_lbl.setAttribute(Qt::WA_NoSystemBackground);
Записан
vux
Гость
« Ответ #2 : Февраль 13, 2012, 09:00 »

не выходит. Область заполенена
Записан
_OLEGator_
Гость
« Ответ #3 : Февраль 13, 2012, 09:07 »

У меня только жестко маской резать получалось.

Код
C++ (Qt)
void QWidget::setMask ( const QBitmap & bitmap )
void QWidget::setMask ( const QRegion & region )

http://www.prog.org.ru/index.php?topic=20694.msg142326#msg142326
Записан
vux
Гость
« Ответ #4 : Февраль 13, 2012, 09:34 »

маской не получиться - это очень динамический qlabel
Записан
_OLEGator_
Гость
« Ответ #5 : Февраль 13, 2012, 10:01 »

Ну если хочется экзотики, то можно попробовать вариант QGraphicsScene/QGraphicsView и дополнительно поделиться результатом в этой теме:
http://www.prog.org.ru/index.php?topic=20694.msg142326#msg142326
Записан
vux
Гость
« Ответ #6 : Февраль 13, 2012, 10:16 »

А что мне это даст? Я питоном и pyqt вклиниваюсь в постороннюю программу.
У нее есть OpenGl виджет. Есть также статусбар. Та вот я хочу отклеить статусбар и чтобы он прозрачно висел над OpenGL картинкой. Я уже пробывал и setAutoFillBackground и OpaquePaintEvent - не получаеться:( Это вообще реально в Qt?
Записан
_OLEGator_
Гость
« Ответ #7 : Февраль 13, 2012, 10:22 »

Сделать прозрачным топ-левел окно

Код
C++ (Qt)
setAttribute(Qt::WA_TranslucentBackground);
setWindowFlags(Qt::FramelessWindowHint);

http://blog.ufna.ru/2010/09/30/qt-opaque-windows-with-gradient
Записан
vux
Гость
« Ответ #8 : Февраль 13, 2012, 11:34 »

не олучаеться. Остаеться черный прямоугольник.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Февраль 13, 2012, 11:55 »

А что мне это даст? Я питоном и pyqt вклиниваюсь в постороннюю программу.
У нее есть OpenGl виджет. Есть также статусбар. Та вот я хочу отклеить статусбар и чтобы он прозрачно висел над OpenGL картинкой. Я уже пробывал и setAutoFillBackground и OpaquePaintEvent - не получаеться:( Это вообще реально в Qt?
И не получится, т.к. для Qt 'OpenGl виджет' чужой 'black-box' и он (Qt) не сможет сделать composing.
Имхо, единственный портабельный способ - делать этот label top-level окном без декораций и как советовал _OLEGator_ применять маски.
Записан

Qt 5.11/4.8.7 (X11/Win)
vux
Гость
« Ответ #10 : Февраль 13, 2012, 12:51 »

Хорошо. А можно маску по цвету. Я знаю какой цвет backgrounda - мне нада этот цвет убрать из QLabel
« Последнее редактирование: Февраль 13, 2012, 12:55 от vux » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #11 : Февраль 13, 2012, 12:56 »

Хм, не понял чем это поможет.
Не совсем понятна иерархия виджетов.
Каким образом было встроено окно "посторонней программы" в окно вашей программы?
И каким образом поверх этого чужого окна размещается этот label?
Записан

Qt 5.11/4.8.7 (X11/Win)
vux
Гость
« Ответ #12 : Февраль 13, 2012, 13:07 »

Это не постороннее окно встроенное в мою программу.
Это программа написанная на Qt - закрытая но имеет питон.
Поэтому я установил PyQt и твикаю некоторые елементы интерфейса по своему. Все получаеться но эта проблема не решена.
В этой программе есть виджет OpenGLный. Мне над ним, для экономии пространства, нада положить свой - для примера я взял просто QLabel. Это все легко решаеться.
Но еслибы этот мой виджет был еще прозрачным и отображал только текст - былобы вообще супер
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #13 : Февраль 13, 2012, 13:10 »

Я знаю какой цвет backgrounda - мне нада этот цвет убрать из QLabel
Код
C++ (Qt)
QPalette palette;
palette.setColor( label->backgroundRole(), background_color );
label->setPalette( palette );
 
Записан

Qt 5.11/4.8.7 (X11/Win)
vux
Гость
« Ответ #14 : Февраль 13, 2012, 14:40 »

Вот так у меня сейчас. Хотелось бы только текст без прозрачного.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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