QLabel Inhalt passt sich nicht der Größe an

Alles rund um die Programmierung mit Qt
Antworten
PewPewLaser
Beiträge: 4
Registriert: 13. August 2009 14:59

QLabel Inhalt passt sich nicht der Größe an

Beitrag 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
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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!
PewPewLaser
Beiträge: 4
Registriert: 13. August 2009 14:59

Beitrag 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
Antworten