QGraphicsView 不显示任何内容

Posted

技术标签:

【中文标题】QGraphicsView 不显示任何内容【英文标题】:QGraphicView doesn't show anything 【发布时间】:2019-08-02 07:35:26 【问题描述】:

我尝试使用 QGraphicView 显示视频,但我的代码没有显示任何内容。有什么问题

QGraphicsScene scene;
QGraphicsVideoItem *item1 = new QGraphicsVideoItem;
item1->setPos(0,100);

QMediaPlayer * player1 = new QMediaPlayer;
player1->setVideoOutput(item1);
player1->setMedia(QUrl("/home/1.wmv"));
QGraphicsView view;
view.scale(0.3,0.3);
view.setScene(&scene);
view.show();
player1->play();

【问题讨论】:

更改为QGraphicsScene *scene = new QGraphicsScene;QGraphicsView *view = new QGraphicsView(scene);,提供minimal reproducible example 【参考方案1】:

您正在创建一个QGraphicsVideoItem,并将其用作QMediaPlayer 的输出,并正在创建一个QGraphicsView,并在其上分配一个QGraphicsScene。但是您没有将QGraphicsVideoItem(或QMediaPlayer)连接到QGraphicsView(或QGraphicsScene),因此QGraphicsView 中显然没有显示任何内容。

请注意,这只是基于您提供的不完整代码的猜测答案。以后请务必包含所有相关代码/创建Minimal, Reproducible Example

【讨论】:

【参考方案2】:

你忘了:

scene->addItem(item1);
int main(int argc, char *argv[])

    QApplication a(argc, argv);

    QGraphicsScene * scene = new QGraphicsScene();
    QGraphicsView * view = new QGraphicsView(scene);

    QGraphicsVideoItem *item1 = new QGraphicsVideoItem;
    QMediaPlayer * player1 = new QMediaPlayer;

    scene->addItem(item1);
    item1->setPos(0,100);

    view->scale(0.3,0.3);
    view->show();

    player1->setVideoOutput(item1);
    player1->setMedia(QUrl::fromLocalFile("/home/user/Musik/musik.mp4"));

    player1->play();

    return a.exec();



【讨论】:

以上是关于QGraphicsView 不显示任何内容的主要内容,如果未能解决你的问题,请参考以下文章

在 QGraphicsView 中获取 QGraphicsScene 的可见区域 [重复]

QGraphicsView 啥都不显示

Qt 部署 - QGraphicsView 不显示在其他机器上

QGraphicsView 适合任何大小的图像,没有滚动条

带有滚动条的 QGraphicsView 内不需要的边距

Qt QGraphicsView不显示场景