2012-04-12 10 views
0

Ich schreibe eine Anwendung mit <Phonon/VideoWidget>.Qt machen ein qmainwindow mit videowidget innerhalb eines Bildes

Ich hätte gerne zwei Fenster. Eines ist das Hauptfenster mit Steuerelementen für das Video Und das andere hat das Video selbst. Es wird auf einem anderen Monitor angezeigt. -fullscreen oder nicht.

Wie kann ich das Videofenster - das bewegt werden kann oder veränderbar ist - mit dem Video erstellen?

Wenn kein Video wiedergegeben wird, sollte im Videofenster ein Bild angezeigt werden.

+0

Sie das Video-Widget Probe zusammengestellt? Fragen Sie, wie Sie das Gleiche mit den Steuerelementen in einem separaten Fenster vom Video implementieren können? http://doc.qt.nokia.com/4.7-snapshot/multimedia-videowidget.html – HostileFork

+0

Nein, ich verwende #include diese Klasse kam mit meinem SDK – fredcrs

+0

auch ich fragte, wie man ein Bild im Inneren anzeigen wenn ich keine Videos spiele – fredcrs

Antwort

0

Am Ende habe ich QStackedWidget verwenden didnt, erweiterte ich Phonon :: VideoWidget und machte diese Klasse ...

Heres die cav:

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() 
{ 

} 
Verwandte Themen