QVideoWidget在对齐时不显示任何内容

时间:2015-04-19 09:38:50

标签: c++ qt qt5 qlayout

我遇到了一个奇怪的问题,需要一些帮助。情况很安静:我有一个 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() {}
};

有什么建议吗? 提前谢谢。

UPD:

发现一件有趣的事情 - 如果&#34; qDebugging&#34;视频小部件的 geometry(),中心对齐&#34; 关闭&#34;它看起来像这样: QRect(11,11 579x459) 但如果我尝试将它与中心对齐,它看起来像这样: QRect(300,240 0x0)

AlignLeft: QRect(11,11 0x456)

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

1 个答案:

答案 0 :(得分:1)

好吧,这里有stackoverflow(对不起,错过了确切的链接)我发现建议不要在布局中使用小部件对齐,而是在小部件内部使用对齐方式更好对齐。这就是为什么我将布局的对齐关闭并将插入到布局中的小部件内容集中在一起的原因。看起来像一个黑客,但它确实有效。 谢谢你的帮助。