QT4.3: QTable Hinergrundbild

Alles rund um die Programmierung mit Qt
Antworten
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

QT4.3: QTable Hinergrundbild

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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...
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

Beitrag von nando »

upsala hat geschrieben:Qt4.3 hat kein QTable....
Ups.. ich meinte QTableWidget......

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


Danke
Nash
Beiträge: 118
Registriert: 27. April 2007 14:49

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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...
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag 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;
}
" );
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

Beitrag von nando »

Hey, mit den style sheets funktioniert es super!
danke fuer den Tip!
Antworten