QMainWindow dynamisch den Size anpassen

Alles rund um die Programmierung mit Qt
Antworten
samir_bmw
Beiträge: 41
Registriert: 11. Juli 2008 16:51

QMainWindow dynamisch den Size anpassen

Beitrag von samir_bmw »

Hallo Zusammen,

ich habe folgendes Problem: Meine QGraphicsScene bekommt ein Bild als Hintergrund.
Die Scene wird als MainWidget in MainWindow hinzugefügt.
Und je nach Bildgrößer ändert sich dynamisch auch MainWindow size.
Wie kann ich den MainWindow so anpassen, damit ich in MainWindow keinen Scrollbalken bekomme?
MainWindow muss fixedsize haben.
Zuletzt geändert von samir_bmw am 10. Mai 2011 13:24, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

QGraphicsView::fitInView schon mal angeschaut?
samir_bmw
Beiträge: 41
Registriert: 11. Juli 2008 16:51

Beitrag von samir_bmw »

hallo,

ich glaube Sie haben mich falsch verstanden. Ich habe die Methode QGraphicsView::fitInView angeschaut, hab nicht so richtig verstanden.
Hier ist die Methode, die ich implementiert habe.

Code: Alles auswählen

void Scene::updateBackgroundBrush(const QImage &image)
{
    QSize imgSize = image.size();
    setSceneRect(0, 0, imgSize.width(), imgSize.height());
    setBackgroundBrush(QBrush(image));
}
Dann später in den MainWindow

Code: Alles auswählen

QSize imgSize = image.size();
setFixedSize(imgSize.width()  + 15,
                      imgSize.height() + (2 * toolBar->size().height()));
So habe ich es angepasst. Wenn ich nicht in MainWindow setFixedSize() aufruche, die Scene kachelt das Bild im hintergrund und das will ich nicht.
Wenn ich ein anderen Thema auswähle dann stimmt nicht mehr die Größe. Dann bekomme ich ein teil des Bilde (gekahelt) im oberen und unteren Rand des Scene.
Ich will den Kacheln durch die Scene vermeinden oder die Größe von MainWindow dynamisch anpassen.
samir_bmw
Beiträge: 41
Registriert: 11. Juli 2008 16:51

Beitrag von samir_bmw »

Hallo,

hat Keiner eine Idee?
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Beitrag von MichaelS »

Moin,

schon mal ein

Code: Alles auswählen

resize(imgSize);
versucht?

Gruß Michael
Antworten