0

奇妙な問題があり、助けが必要です。状況は静かで簡単です: 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()は次のようになります: QRect(11,11 579x459) しかし、中央に揃えようとすると、次のようになります: QRect( 300,240 0x0)

左揃え: QRect(11,11 0x456)

この問題が発生する理由と、この問題を解決する正しい方法はわかりませんが、QVideoWidgetQGraphicsScene-QGraphicsView-QGraphicsVideoItemチェーンで変更しても繰り返されます。

4

1 に答える 1

1

さて、ここstackoverflowで(申し訳ありませんが、正確なリンクを逃しました)レイアウトのウィジェットで配置を使用しないというアドバイスが見つかりました。代わりに、配置する必要があるウィジェット内で配置を使用することをお勧めします。そのため、レイアウトの配置をオフにして、レイアウトに挿入されるウィジェットのコンテンツを中央に配置しました。ハックのように見えますが、実際に機能します。助けてくれてありがとう。

于 2015-04-27T07:52:39.200 に答える