Russian Qt Forum

Qt => Мультимедиа => Тема начата: gil9red от Июль 22, 2016, 10:15



Название: [РЕШЕНО] QVideoWidget неправильно разворачивается во весь экран
Отправлено: gil9red от Июль 22, 2016, 10:15
Проблема в теме.

Windows 7. Qt 5.6.0

Код окна-плеера ниже так же как и архив с минимальным проектом, и скрином окна-плеера, когда он развернулся во весь экран.

Код
C++ (Qt)
class VideoWidget: public QVideoWidget {
  Q_OBJECT
 
public:
   VideoWidget() : QVideoWidget() {
       setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
       auto p = palette();
       p.setColor(QPalette::Window, Qt::black);
       setPalette(p);
       setAttribute(Qt::WA_OpaquePaintEvent);
 
       auto player = new QMediaPlayer();
       player->setVideoOutput(this);
       player->setMedia(QUrl("C:/Users/ipetrash/Desktop/7f_Gravity.Falls.S01E01.rus.vo.sienduk.a1.08.12.15.mp4"));
       player->play();
   }
 
   void keyPressEvent(QKeyEvent* event) {
       if (event->key() == Qt::Key_Escape && isFullScreen()) {
           setFullScreen(false);
           event->accept();
       } else {
           QVideoWidget::keyPressEvent(event);
       }
   }
 
   void mouseDoubleClickEvent(QMouseEvent* event) {
       setFullScreen(!isFullScreen());
       event->accept();
   }
};
 

Спасибо :)


Название: Re: QVideoWidget неправильно разворачивается во весь экран
Отправлено: Bepec от Июль 22, 2016, 10:21
Ну, фуллскрин для окна, это то что у вас получается. Т.к. панель задач по умолчанию на переднем плане.
Чтобы сделать фуллскрин полным, нужно делать stayOnTop для окна.


Название: Re: QVideoWidget неправильно разворачивается во весь экран
Отправлено: gil9red от Июль 22, 2016, 10:42
А почему тогда фуллскрин просто виджета полностью закрывает все пространство?
И если приглядеться на верх скрина, можно заметить, что окно частично оставило открытым


Название: Re: QVideoWidget неправильно разворачивается во весь экран
Отправлено: Bepec от Июль 22, 2016, 12:28
Ну, тут видимо бага, учитывается заголовок окна и отсутствует "StayOnTop" для VideoWidget при фуллскрине.
Если вам интересно, полазьте по исходникам. (а мне чет не очень интересно :D )

PS в качестве костыля могу предложить флаги framelessWindow / stay on top и resize по QDesctopWidget size. Результат будет тот же что и от фуллскрина, но... костыль епть :D


Название: Re: QVideoWidget неправильно разворачивается во весь экран
Отправлено: gil9red от Июль 22, 2016, 12:32
Ну, тут видимо бага, учитывается заголовок окна и отсутствует "StayOnTop" для VideoWidget при фуллскрине.
Если вам интересно, полазьте по исходникам. (а мне чет не очень интересно :D )

PS в качестве костыля могу предложить флаги framelessWindow / stay on top и resize по QDesctopWidget size. Результат будет тот же что и от фуллскрина, но... костыль епть :D

Ага, нужно будет поиграться :)


Название: Re: QVideoWidget неправильно разворачивается во весь экран
Отправлено: gil9red от Июль 22, 2016, 13:20
Поигрался и получилось, что проблема проявляется если QVideoWidget является центральнм виджетом, т.е. напрямую указывается в setCentralWidget.
Если центральным виджетом указать виджет, содержащий QVideoWidget, то проблемы нет.

UPDATE.
Но если указать в лайауте отступы, то снова проявляется баг.
Код
C++ (Qt)
layout->setContentsMargins(0, 0, 0, 5);
WTF? O_o

Код
C++ (Qt)
VideoWidget w;
 
QWidget ww;
auto layout = new QVBoxLayout();
layout->addWidget(&w);
ww.setLayout(layout);
ww.show();
 
QMainWindow ww;
ww.setCentralWidget(&w);
ww.show();


Название: Re: [РЕШЕНО] QVideoWidget неправильно разворачивается во весь экран
Отправлено: Bepec от Июль 22, 2016, 13:33
Бгг... страшные дела с setCentralWidget. Я его вообще не пользую, ибо он мутный какой то :D


Название: Re: [РЕШЕНО] QVideoWidget неправильно разворачивается во весь экран
Отправлено: gil9red от Июль 22, 2016, 14:02
Бгг... страшные дела с setCentralWidget. Я его вообще не пользую, ибо он мутный какой то :D

И QMainWindow тоже не используете? Ведь setLayout для QMainWindow не работает


Название: Re: [РЕШЕНО] QVideoWidget неправильно разворачивается во весь экран
Отправлено: gil9red от Июль 22, 2016, 14:20
Создал багу на джире Qt: https://bugreports.qt.io/browse/QTBUG-54906


Название: Re: [РЕШЕНО] QVideoWidget неправильно разворачивается во весь экран
Отправлено: Bepec от Июль 22, 2016, 14:26
Ну как бы использую. Вот только setCentralWidget не пользую :)
Ну или если быть точнее - в коде я его не пользую.


Название: Re: [РЕШЕНО] QVideoWidget неправильно разворачивается во весь экран
Отправлено: gil9red от Июль 22, 2016, 14:31
А как тогда можно с QMainWindow работать? Или вы используете какой-то грязный хак, чтобы разместить на QMainWindow виджеты, обходя setCentralWidget? :)


Название: Re: [РЕШЕНО] QVideoWidget неправильно разворачивается во весь экран
Отправлено: Bepec от Июль 22, 2016, 14:37
Не, если создавать всё в дизайнере, то баги связанные с ним не проявляются. Почему? Видимо там скрытый виджет создаётся, на котором и размещаются все дизайнерские компоненты.
А как только вызываешь в коде и ставишь свой виджет, сыпятся баги. Я пару тройку проблем помню начинал решать, потом плюнул :D


Название: Re: [РЕШЕНО] QVideoWidget неправильно разворачивается во весь экран
Отправлено: kuzulis от Июль 22, 2016, 19:40
> Создал багу на джире Qt:

Гыы.. долго будешь ждать... Ёхан Лопес - он такой медлительный/глухой/слепой..

ЗЫ: Я по этому поводу "разворошил" development список рассылки, типа что за хрень, почему баги не фигсятся и вообще, мейнтейнер молчит как партизан, что в лоб что по лбу..  ;)
ЗЫ2: Придется тебе самому "баг" фиксить..


Название: Re: [РЕШЕНО] QVideoWidget неправильно разворачивается во весь экран
Отправлено: gil9red от Июль 22, 2016, 22:32
> Создал багу на джире Qt:

Гыы.. долго будешь ждать... Ёхан Лопес - он такой медлительный/глухой/слепой..

ЗЫ: Я по этому поводу "разворошил" development список рассылки, типа что за хрень, почему баги не фигсятся и вообще, мейнтейнер молчит как партизан, что в лоб что по лбу..  ;)
ЗЫ2: Придется тебе самому "баг" фиксить..

Вот блин :(
Можно, конечно варианты посмотреть:
1. не устанавливать границы лайута
2. попробовать воспроизводить в QML или на графической сцене -- может без бага обойдется  :)


Название: Re: [РЕШЕНО] QVideoWidget неправильно разворачивается во весь экран
Отправлено: gil9red от Июль 26, 2016, 16:11
> Создал багу на джире Qt:

Гыы.. долго будешь ждать... Ёхан Лопес - он такой медлительный/глухой/слепой..

ЗЫ: Я по этому поводу "разворошил" development список рассылки, типа что за хрень, почему баги не фигсятся и вообще, мейнтейнер молчит как партизан, что в лоб что по лбу..  ;)
ЗЫ2: Придется тебе самому "баг" фиксить..

А дело то у них пошло :D