Seite 1 von 1

QLabel Inhalt passt sich nicht der Größe an

Verfasst: 16. November 2009 23:00
von PewPewLaser
Hallo liebe Community,
ich habe ein QLabel von dem ich die winId hole. Diese ID benötige ich um mit einer externen Funktion ein Video meiner „Web Cam“ anzuzeigen. Das Video wird auch angezeigt. Sobald ich aber das Fenster, indem das Video angezeigt wird vergrößere, bleibt die ursprüngliche Größe des Videos leider erhalten, wobei sich das Fenster schon vergrößert (weißer überlappender Hintergrund). Das Video soll sich der Größe aber anpassen! Hat wer eine Idee dazu? :-)
Liebe Grüße
Laser

Verfasst: 17. November 2009 09:51
von AuE
Das Label sitzt in einen Layuout nehme ich an?

Ansonsten: Sag uns wie du das Video ins Label bekommst sonst wird das echt schwer dir zu helfen!

Verfasst: 17. November 2009 15:19
von PewPewLaser
-- Ausschnitt Konstruktor --
//GridLayout myLayout erstellen
QGridLayout *myLayout = new QGridLayout();

//GroupBox myBox erstellen
QGroupBox *myBox = new QGroupBox();

//myLayout der GroupBox myBox hinzufügen
myBox->setLayout(myLayout);

//Neues Label erstellen
imageLabel = new QLabel;

//Label dem Layout hinzufügen

myLayout->addWidget(imageLabel);

//myBox als centralWidget setzen
this->setCentralWidget(myBox);

//WId des Labes abfragen und in id speichern
id = imageLabel->winId();

//Handle zur Kamera
hCamera = NULL;

----------------------------------

-- Funktion/Slot myConnect --

//Funktion stellt Verbindung mit Kamera her und schließt diese bei Bedarf
void FensterPreview::myConnect()
{
//Falls Connect Button gedrückt ist
if(this->actionConnect->isChecked())
{
//camCheck überprüft ob eine Farbkamera am Computer angeschlossen ist
if(camCheck())
{
//LucamCameraOpen = Öffnet eine Verbindung zur Kamera
hCamera = LucamCameraOpen(cameraNumber);
//setCamSettings = Funktion setzt diverse Parameter wie Helligkeit, Rot, Grün, Blau - Werte
setCamSettings();

//LucamStreamVideoControl = START_DISPLAY will start the video streaming and display it in the specified window. hCamera = handle, id = WId imageLabel
LucamStreamVideoControl(hCamera,START_DISPLAY,id);
actionSaveSnapshot->setEnabled(true);
handle = true;
}
else
{
actionConnect->setChecked(false);
}
}
else
{
//LucamCameraClose = Schließt Verbindung zur Kamera
LucamCameraClose(hCamera);
actionSaveSnapshot->setEnabled(false);
handle = false;
}
}
----------------------------------

Sobald ich die Kamera mit dem Connect Button aktiviere zeigt er mir den Videostream. Vergrößere ich mein Fenster bleibt das Label in dem der Stream gezeigt wird gleich. Sobald ich jedoch die Kamera über den Connect Button schließe und wieder öffne, passt sich das Preview Bild automatisch der Größe an und füllt das Label komplett aus... Hoffe die Infos können irgendwie weiterhelfen :) Meine Idee war noch irgendwie beim Ende des Resize Events den Fenster Inhalt zu zerstören und neu zu erstellen. Aber funktioniert bisher noch nicht so toll :D