How to get Phonon::VideoPlayer video size
Hi everyone,
I'm back with a new question.
I have a dialog box which has a button to call QFileDialog::getOpenFileName() to choose a video file.
And the Phonon::VideoPlayer will use the path to play the video.
Now I want to get the width and height of the video. After some searching I try to use VideoPlayer->sizeHint()to get the size while the path is set. The code is like:
Code:
void VideoDialog::addVideo() // A slot called by clicked() signal of the button
{
QMessageBox::warning(this, tr
("0"),
QString::number(m_videoPlayer
->sizeHint
().
width()) + " x " + QString::number(m_videoPlayer
->sizeHint
().
height()));
QString videoFile
= QFileDialog::getOpenFileName(.....
);
// The function arguments are removed if(!videoFile.isEmpty()){
m_videoPlayer->mediaObject()->clear();
m_videoPlayer->mediaObject()->setCurrentSource(videoFile);
QMessageBox::warning(this, tr
("1"),
QString::number(m_videoPlayer
->sizeHint
().
width()) + " x " + QString::number(m_videoPlayer
->sizeHint
().
height()));
}
}
The problem I met is that after I set the video path, the sizeHint is not updated. But if I press the button again, the sizeHint will be the right value. Is there a way to get the sizeHint immediately?
Thanks in advance.
Re: How to get Phonon::VideoPlayer video size
And another thing I found is when I hide the VideoPlayer widget, I only get 1 x 1 every time on sizeHint.
I know the doc says "The default implementation of sizeHint() returns an invalid size if there is no layout for this widget. "
But I do need to hide the widget on initial. Any help please?
Re: How to get Phonon::VideoPlayer video size
Please ignore my last reply, I think it is caused by I didn't load the video first.
So Back to my original question, after I load my video, I cannot get the size directly.
I solved it by getting size after the hasVideoChanged() signal.
Now I can get the size of the 1st video. But if I change it to another video, even if the hasVideoChanged() signal is emitted, the video player's sizeHint is keeping the old value.
I can solve it by doing
Code:
videoPlayer->show();
videoPlayer->sizeHint();
videoPlayer->hide();
But obviously that's not a good way since I want the player keeping hidden.
This there a way to solve this?
Thanks.