[英]QVideoWidget doesn't show anything when aligned
我遇到了一個奇怪的問題,需要一些幫助。 情況很簡單:我有一個QMediaPlayer , QVideoWidget和一些布局(例如QVboxLayout ;實際上,這並不重要)。 問題是當我添加具有指定對齊方式的QVideoWidget時-視頻未顯示,該窗口小部件只有一個位置,沒有視頻的空白區域。 如果我不指定對齊就添加它也沒有問題。 這是代碼示例:
Widget.h:
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0)
: QWidget(parent)
{
QVideoWidget *vw = new QVideoWidget();
QVBoxLayout *vb = new QVBoxLayout();
vb->addWidget(vw, 0/*, Qt::AlignCenter*/); /// << here's the problem block
this->setLayout(vb);
QMediaPlayer *pl = new QMediaPlayer();
pl->setMedia(QMediaContent(
QUrl::fromLocalFile("D:/1.wmv")));
pl->setVideoOutput(vw);
pl->play();
this->resize(600, 480);
}
~Widget() {}
};
有什么建議么? 提前致謝。
發現了一件有趣的事情-如果視頻小部件的“ qDebugging” geometry()中心對齊為“ off ”,它看起來像這樣: QRect(11,11 579x459)但是如果我嘗試將它對齊到中心,它看起來像這樣: QRect( 300,240 0x0)
AlignLeft: QRect(11,11 0x456)
不知道為什么會這樣,以及解決此問題的正確方法是什么,但是即使我使用QGraphicsScene-QGraphicsView-QGraphicsVideoItem鏈更改了QVideoWidget ,它也會重復執行。
好吧,在stackoverflow上(抱歉,錯過了確切的鏈接),我發現建議不要在布局中的小部件上使用對齊方式,而是最好在必須對齊的小部件中使用對齊方式。 這就是為什么我關閉布局的對齊方式並將居中控件的內容居中的原因,這些控件已插入到布局中。 看起來像駭客,但確實有效。 謝謝您的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.