Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: mafia_al от Май 13, 2017, 13:05



Название: Не работает прозрачность у QWidget, расположенного над QVideoWidget
Отправлено: mafia_al от Май 13, 2017, 13:05
Всем привет!

Реализовывал следующую задачу (Qt 5.8.0, компилер студийный 2015):
Мне нужно разместить над идущим видео полупрозрачную панельку с информацией о текущем видео. Видео я вывожу при помощи QMediaPlayer в QVideoWidget. Панель - мой собственный виджет, отнаследованный от QFrame.
Код:
class FrameInfoWidget : public QFrame
{
  ........
private:
    Ui::FrameInfoWidget *ui;
};
Прозрачность задаю ему в styleSheet.

Но столкнулся с проблемой:
Моя панель над видео не хочет быть прозрачной!!!
(http://ipic.su/img/img7/fs/problem1.1494669617.png)

Как видно, над прочими виджетами панель прозрачна, а над видео потоком нет. Экспериментировал с разными типами для setAttribute не помогло :(

Кто-нибудь знает, в чём дело и как это обойти?


Название: Re: Не работает прозрачность у QWidget, расположенного над QVideoWidget
Отправлено: mafia_al от Май 13, 2017, 17:03
Прозрачность сделать получилось, заменив QVideoWidget на QGraphicsVideoItem.
Но появился другой неприятный момент: исчезло сглаживание у видео :(

(http://ipic.su/img/img7/fs/problem2.1494684042.png)


Название: Re: Не работает прозрачность у QWidget, расположенного над QVideoWidget
Отправлено: mafia_al от Май 13, 2017, 17:23
Сглаживание сделать оказалось просто. Для QGraphicsView надо было задать соответствующие опции.

Код:
mVideoView->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing);

Проблема решена.


Название: Re: Не работает прозрачность у QWidget, расположенного над QVideoWidget
Отправлено: gil9red от Май 14, 2017, 00:29
Вы молодцы :)