0

我有一个奇怪的问题,需要一些帮助。情况很简单:我有一个QMediaPlayerQVideoWidget和一些布局(例如QVboxLayout;好吧,这并不重要)。问题是当我添加QVideoWidget并指定对齐时 - 视频不显示,小部件只有一个位置,一个没有视频的空白区域。如果我在不指定对齐方式的情况下添加它也没有问题。这是代码示例:

小部件.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()与中心对齐“关闭”它看起来像这样:QRect(11,11 579x459) 但是如果我尝试将它对齐到中心它看起来像这样:QRect( 300,240 0x0)

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

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

4

1 回答 1

1

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

于 2015-04-27T07:52:39.200 回答