Начнём с того, что я использую 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 рисоваться на прозрачном окне?