Задать вопрос
bfDeveloper
@bfDeveloper

Qt AutoFillBackGround и полупрозрачное окно?

Начнём с того, что я использую mplayer для воспроизведения видео в своём приложении. Создаётся процесс, указывается winId виджета, на котором играется видео. Для того чтобы картика показывалась я устанавливаю AutoFillBackground true. Всё это работает как надо. Использую mplayer, так как Phonon ни с одним backend'ом (даже mplayer) не захотел играть *.avs файлы. А mplayer сам по себе играет.

Теперь мне потребовалось сделать окно в виде картинки с полупрозрачностью. Это работает следующим образом:
MainWindow mw;
    QPixmap img(":/win.png");

    mw.setPixmap(img);
    mw.setMask(img.mask());
    mw.resize(1280, 1050);

    mw.setAttribute(Qt::WA_TranslucentBackground);
    mw.setWindowFlags(Qt::FramelessWindowHint);


Проблема возникла при добавлении моего виджета с mplayer'ом на это фигурное окно. Звук играется картинки нет. Mplayer никаких ошибок в консоль не выдаёт.

Если добавить mw.setAutoFillBackground(true), то картинка появляется, но пропадают полупрозрачности, они заполняются стандартным цветом окна. Если же установит окну Palette с прозрачным цветом, то перестаёт играться видео.

ОС Windows 7 32-bit.

Запускаю mplayer так: mplayer -vo direct3d -slave -wid<MPlayerWidget->winId()> filename

Как заставить mplayer рисоваться на прозрачном окне?
  • Вопрос задан
  • 4812 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
Решения вопроса 1
bfDeveloper
@bfDeveloper Автор вопроса
Решил проблему, сделав отдельное окно для плеера (виджет верхнего уровня). Пришлось отслеживать движение основного окна и двигать за ним плеер, но зато всё отлично работает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Инком Нижний Новгород
от 160 000 до 230 000 ₽
Инком Нижний Новгород
от 160 000 до 230 000 ₽
ITK academy Краснодар
от 220 000 до 300 000 ₽