QVideoWidget 对齐时不显示任何内容

QVideoWidget doesn't show anything when aligned

我遇到了一个奇怪的问题,需要一些帮助。情况很简单:我有一个 QMediaPlayerQVideoWidget 和一些布局(例如 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)

左对齐:QRect(11,11 0x456)

不知道为什么会发生这种情况以及解决此问题的正确方法是什么,但即使我将 QVideoWidget 更改为 QGraphicsScene-QGraphicsView,它也会重复出现-QGraphicsVideoItem 链.

好吧,在 Whosebug 上(抱歉,错过了确切的 link)我发现建议不要在布局中的小部件上使用对齐方式,而是最好在必须的小部件内部使用对齐方式对齐。这就是为什么我关闭了布局的对齐方式并将插入到布局中的小部件的内容居中的原因。看起来像 hack,但它确实有效。 感谢您的帮助。