[Qt4] Skalierung und Verteilung von Elementen
Verfasst: 19. August 2005 21:19
Hallo,
ich schreibe gerade an einem kleinen Diashow-Programm und habe noch ein ppar Problemchen mit dem Layout. Einen Screenshot zur besseren Verdeutlichung habe ich euch beigefugt.
Die zweite Button-Leiste besteht aus einem StackedWidget. Dieser wird folgendermaßen erstellt:
Das funktioniert auch ohne Probleme, nur würde ich die Buttons gerne, wie bei einem normalen Layout üblich, über die gesamte Breite verteilen. Auch die Verwendung von Spacern bringt hier keine Änderung. Vermutlich muss ich die Breite des Stacks an die Fensterbreite anpassen. Nur leider habe ich im Moment keine Ahnung, wie ich das tun soll. Vielleicht hat hier jemand von euch einen Tipp.
Viel wichtiger ist aber der Bereich mit dem Foto. Wie ihr seht, wird das Foto total verzerrt dargestellt. Es wird in der Höhe einfach nicht mitskaliert.
Hier habe ich leider gar keine Idee, wie ich eine vernünftige Skalierung des Bildes erreichen kann. Gibt es eine Möglichkeit, den maximal verfügbaren Platz für das Element im zentralen QVBoxLayout zu ermitteln? Damit könnte man dann die maximale Größe des Bildes ermitteln und es entsprechend skalieren. Allerdings habe ich noch keine Möglichkeit gefunden, dies zu ermitteln.
Vielen Dank für eure Hilfe
Heiko
ich schreibe gerade an einem kleinen Diashow-Programm und habe noch ein ppar Problemchen mit dem Layout. Einen Screenshot zur besseren Verdeutlichung habe ich euch beigefugt.
Die zweite Button-Leiste besteht aus einem StackedWidget. Dieser wird folgendermaßen erstellt:
Code: Alles auswählen
QStackedWidget *stackedWidget = new QStackedWidget(centralWidget);
stackedWidget->setCurrentIndex(1);
//First Widget Stack
QWidget *FirstWidgetStack = new QWidget();
QWidget *WidgetLayoutSecondLevel = new QWidget(FirstWidgetStack);
QHBoxLayout *LayoutFirstWidgetStack = new QHBoxLayout(WidgetLayoutSecondLevel);
QPushButton *ButtonSecondLevel[LabelSecondLevelDirectorys[0].size()]; for (int i = 0; i < LabelSecondLevelDirectorys[0].size(); ++i)
{
ButtonSecondLevel[i] = new QPushButton(LabelSecondLevelDirectorys[0].at(i),WidgetLayoutSecondLevel);
LayoutFirstWidgetStack->addWidget(ButtonSecondLevel[i]);
}
stackedWidget->addWidget(FirstWidgetStack);
Viel wichtiger ist aber der Bereich mit dem Foto. Wie ihr seht, wird das Foto total verzerrt dargestellt. Es wird in der Höhe einfach nicht mitskaliert.
Code: Alles auswählen
QLabel *pictureWidget = new QLabel();
pictureWidget->setScaledContents(TRUE);
QSize stack = pictureWidget->size();
QString test = SecondLevelDirectorys[0][0]+"/"+Pictures[0];
QImage image(test);
image=image.scaled(stack,Qt::KeepAspectRatio,Qt::SmoothTransformation);
pictureWidget->setPixmap(QPixmap::fromImage(image));
Vielen Dank für eure Hilfe
Heiko