2016-07-11 6 views
0

Ich arbeite in Qt 5.7 in C++ in QT Designer. In zentrale Widget Ich habe zwei Etiketten mit Bildern erfüllt. Ein Bild ist groß (Etikett), das zweite ist kleiner, kleiner (label_2) ist vor dem größeren. Wenn ich die MainWindow Größe verändere, passen die Bilder seine Größe nicht an. Ich habe versucht, sie unter Verwendung Layouts zu justieren, aber mein Problem ist, dass das kleinere Bild das größere überlagern muss (Karte und Kartenposition). Und wenn ich Layout verwende, werden Bilder immer an einem anderen Ort platziert. Wie erzwinge Bild in den Etiketten (Label, Label_2) Anpassung der Größe abhängig von Main Windows ohne ein Layout zu verwenden?Widget-Anpassung in QT ohne Verwendung von Layouts

enter image description here

+1

Haben Sie versucht, 'QLabel :: setScaledContents()' maßstabs Bilder mit Layout? – ilotXXI

Antwort

1

Sie können die Größe ändern Ereignisse des Hauptfensters behandeln und die Etiketten Geometrie entsprechend eingestellt.

In diesem Fall empfehle ich, die resizeEvent(QResizeEvent *event) in der Implementierung des vom Designer erstellten Widgets neu zu implementieren, um die Größenänderungsereignisse zu behandeln.

Beispiel:

void MainWindow::resizeEvent(QResizeEvent *event) 
{ 
    QMainWindow::resizeEvent(event); 
    int x1, y1, w1, h1; 
    int x2, y2, w2, h2; 
    // compute the labels geometry 
    // you can get the old and the new window size 
    // calling event->oldSize() and event->size() 
    //.... 
    label->setGeometry(x1, y2, w1, h1); 
    label_2->setGeometry(x2, y2, w2, h2); 
} 

Siehe QWidget::resizeEvent()

Verwandte Themen