我有一个奇怪的问题,需要一些帮助。情况很简单:我有一个QMediaPlayer、QVideoWidget和一些布局(例如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链,它也会重复。