Hey,
Also ich hätte eine Problem und zwar hab ich ein QMdiArea und will ein Hintergrundbild setzen.
Das mache ich mit mdiArea->setStyleSheet...
Das Problem ist allerdings, dass jetzt nicht das MdiArea selbst ein Hintergrundbild hat sondern lediglich die einzelnen MDI Fenster, die auf dem Area geöffnet werden. Es sollte allerdings genau umgekehrt sein.
Hat jemand eine Idee wie ich das bewerkstelligen kann?
Schonmal vielen dank für eure Hilfe
TheProgrammer
Hintergrund bei einem QMdiArea
-
TheProgrammer
- Beiträge: 22
- Registriert: 27. Oktober 2007 17:15
-
TheProgrammer
- Beiträge: 22
- Registriert: 27. Oktober 2007 17:15
-
TheProgrammer
- Beiträge: 22
- Registriert: 27. Oktober 2007 17:15
Ach ich war im falschen fenster.
ich habs gefunden!
Allerdings funktioniert es zumindest mit StyleSheets trotzdem nicht.
Auch wenn der code dann so aussieht:
setzt er das Bild trotzdem bei den MDi Fenstern und nicht bei dem MDI Area als Hintergrund.
ich habs gefunden!
Allerdings funktioniert es zumindest mit StyleSheets trotzdem nicht.
Auch wenn der code dann so aussieht:
Code: Alles auswählen
mdiArea->viewport ( )->setStyleSheet(QString::fromUtf8("background-image: url(C:/IWMDBModeler/IWMDBModeler/IWMDBModeler/Resources/background.PNG);"));-
TheProgrammer
- Beiträge: 22
- Registriert: 27. Oktober 2007 17:15
-
chrislo1976
- Beiträge: 105
- Registriert: 24. Februar 2008 09:45
Hallo!
Ich habe es bei mir so gelöst dass ich eine Klasse von QMdiArea abgeleitet habe (z.B. QMdiAreaEx) und darin dann das paintEvent überschrieben habe.
So kann ich im Hintergrund des MDI-Bereichs ein Logo anzeigen, und dies z.B. verkleinern wenn das Fenster selbst kleiner als ein bestimmter Wert wird:
st evtl. nicht optimal, funktioniert aber genau so wie ich das haben möchte:)
HTH
Christian
Ich habe es bei mir so gelöst dass ich eine Klasse von QMdiArea abgeleitet habe (z.B. QMdiAreaEx) und darin dann das paintEvent überschrieben habe.
So kann ich im Hintergrund des MDI-Bereichs ein Logo anzeigen, und dies z.B. verkleinern wenn das Fenster selbst kleiner als ein bestimmter Wert wird:
Code: Alles auswählen
void QMdiAreaEx::paintEvent(QPaintEvent* paintEvent)
{
QPainter painter(viewport());
QRect rc = painter.viewport();
QPixmap pixmap(":/gfx/img/logo_gross.png");
int rcw = rc.width();
int rch = rc.height();
int pmw = pixmap.width();
int pmh = pixmap.height();
if (rcw < pmw)
{
pixmap = pixmap.scaledToWidth(rcw, Qt::SmoothTransformation);
pmw = pixmap.width();
pmh = pixmap.height();
}
if (rch < pmh)
{
pixmap = pixmap.scaledToHeight(rch, Qt::SmoothTransformation);
pmw = pixmap.width();
pmh = pixmap.height();
}
int x = (rcw - pmw) / 2;
int y = (rch - pmh) / 2;
painter.fillRect(rc, QBrush(QColor(192,192,192), Qt::SolidPattern));
painter.drawPixmap(x, y, pixmap);
}HTH
Christian
-
TheProgrammer
- Beiträge: 22
- Registriert: 27. Oktober 2007 17:15