【问题标题】:Qt making a qmainwindow with videowidget inside displaying an imageQt制作一个带有videowidget的qmainwindow,里面显示图像
【发布时间】:2023-04-11 01:50:01
【问题描述】:

我正在使用<Phonon/VideoWidget> 编写应用程序。

我想要两个窗口。一个是带有视频控件的主窗口 另一个有视频本身。它将显示在另一台显示器上。 - 全屏与否。

如何使视频窗口(可以移动或调整大小)与里面的视频一起使用?

不播放任何视频时,视频窗口应显示图像。

【问题讨论】:

  • 您是否编译了视频小部件示例?您是否在问如何仅在与视频不同的窗口中使用控件实现相同的功能? doc.qt.nokia.com/4.7-snapshot/multimedia-videowidget.html
  • 不,我正在使用 #include 这个类是我的 SDK 附带的
  • 我也在询问不播放视频时如何在其中显示图像
  • 我对 Phonon 了解不多;我的印象是它是一个废弃的旧 API。但至于在布局中拥有一个可以轻松将一个小部件换成另一个小部件的插槽的能力,请查看 QStackedWidget。它会让你包含一个 QImage 和一个视频播放器并在它们之间交换。 qt-project.org/doc/qt-4.8/qstackedwidget.html
  • 谢谢。我不知道 QStackWidget,认为它应该可以完成这项工作。我会试试的

标签: qt video window phonon


【解决方案1】:

最后我没有使用 QStackedWidget,我扩展了 Phonon::VideoWidget 并制作了这个类...

这是 cpp:

MyVideoWidget::MyVideoWidget(QWidget *parent) : Phonon::VideoWidget(parent)
{
    label = new QLabel(this);
    label->setAutoFillBackground(true);
    label->setBackgroundRole(QPalette::Light);
    label->setScaledContents(true);
}

void MyVideoWidget::mouseDoubleClickEvent(QMouseEvent* event)
{
    if(!this->isFullScreen())
        this->enterFullScreen();
    else
        this->setFullScreen(false);
}

void MyVideoWidget::keyPressEvent(QKeyEvent* event)
{
    if(event->key() == Qt::Key_Escape)
    {
        if(!this->isFullScreen())
            this->enterFullScreen();
        else
            this->setFullScreen(false);
    }
}

void MyVideoWidget::enterImageMode(QString imagePath)
{
    QPixmap pmap;
    pmap.fill(QColor(255, 255, 255));
    if(!pmap.load(imagePath))
    {
        label->setText("Erro ao carregar imagem: "+imagePath);
        if(!label->isVisible())
                label->show();
        return;
    }
    label->setPixmap(pmap);
    if(!label->isVisible())
        label->show();
    repaint();
}

void MyVideoWidget::enterVideoMode()
{
    label->hide();
}

void MyVideoWidget::resizeEvent(QResizeEvent* event)
{
    Phonon::VideoWidget::resizeEvent(event);
    label->setGeometry(this->geometry());
    repaint();
}

MyVideoWidget::~MyVideoWidget() 
{

}

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 2011-12-03
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    相关资源
    最近更新 更多