Seite 1 von 1

QT4.3: QTable Hinergrundbild

Verfasst: 15. Juni 2007 07:53
von nando
Hi,

ich hab bei meiner QTable Klasse ein Hintergrundbild gesetzt:

mit

Code: Alles auswählen


void setBackgroundImage(QWidget *pW, const QPixmap &image)
{
    QPalette newPalette(pW->palette());
    newPalette.setBrush(QPalette::Base,           QBrush(image));
    newPalette.setBrush(QPalette::Background, QBrush(image));
    pW->setPalette(newPalette);
}


Das funktioniert auch, ABER:
wenn ich die Tabelle scrolle, scrollt das Hintergrundbil mit.
Ich haette es gerne, dass nur die Daten und die Rahmen scrollen, das Hintergrundbild aber fix bleibt.......

Gibt es da einen relativ einfachen Weg?



Gruss,
Nando

Verfasst: 15. Juni 2007 09:09
von upsala
Qt4.3 hat kein QTable...

Hintergrund abschalten, paintEvent vom Viewport abfangen und Hintergrund selbst zeichnen (eventFilter...)

Über Performance brauchen wir bei sowas aber nicht mehr reden...

Verfasst: 15. Juni 2007 09:14
von nando
upsala hat geschrieben:Qt4.3 hat kein QTable....
Ups.. ich meinte QTableWidget......

Okay, dann werde ich es wohl so lassen.....


Danke

Verfasst: 15. Juni 2007 14:38
von Nash
upsala hat geschrieben:Qt4.3 hat kein QTable...

Hintergrund abschalten, paintEvent vom Viewport abfangen und Hintergrund selbst zeichnen (eventFilter...)

Über Performance brauchen wir bei sowas aber nicht mehr reden...
wieso sollen wir nicht über performance reden?

er brauch das Bild ja auch nicht im paintevent einfügen sondern ins resize event, und dann dort immer neu zeichnen.

und das QTableWidget macht er transparent.

Wir sprechen hier über simple 2D zeichnungen so rechenintensiv ist das nun auch wieder nicht.

Verfasst: 15. Juni 2007 16:37
von upsala
Weil bei jeder Änderung der Scrollbars das gesamte Widget neu gezeichnet werden muß. Nur weil eine amerikanische Softwarefirma vormacht wie man unötig Rechenleistung verplempert muß das nicht jeder nachmachen...

Verfasst: 18. Juni 2007 11:18
von NoobSaibot
Jungs mit StyleSheet geht sowas viel eleganter

Code: Alles auswählen

tableWidget->setStyleSheet( "
QTableWidget {
    background-image: url("mein_bild.png");
    background-attachment: fixed;
    background-repeat: no-repeat;
    background-position: bottom right;
}
" );

Verfasst: 18. Juni 2007 13:59
von nando
Hey, mit den style sheets funktioniert es super!
danke fuer den Tip!