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 рисоваться на прозрачном окне?
  • Вопрос задан
  • 4789 просмотров
Решения вопроса 1
bfDeveloper
@bfDeveloper Автор вопроса
Решил проблему, сделав отдельное окно для плеера (виджет верхнего уровня). Пришлось отслеживать движение основного окна и двигать за ним плеер, но зато всё отлично работает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы