我遇到了一个奇怪的问题,需要一些帮助。这种情况很简单:我有一个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() {}
};
有什么建议吗?提前谢谢。
UPD:
发现了一件有趣的事情——如果";q调试">geometry()具有中心对齐的视频小部件">关闭";它看起来像这样:QRect(11,11 579x459)但如果我试图将它与中心对齐,它看起来像是:QRect(300240 0x0)
左对齐:QRect(11,11 0x456)
我不知道为什么会发生这种情况,也不知道解决这个问题的正确方法是什么,但即使我用QGraphicsScene QGraphicsView QGraphicsVideoItem链更改QVideoWidget,它也会重复。
好吧,在stackoverflow上(对不起,错过了确切的链接),我发现了不要在布局中的小部件上使用对齐的建议,相反,最好在必须对齐的小部件内部使用对齐。这就是为什么我关闭了布局的对齐,并将插入到布局中的小部件的内容居中。看起来像黑客,但它确实有效。谢谢你的帮助。