Background Pixmap bei Widget

Alles rund um die Programmierung mit Qt
Antworten
pfu
Beiträge: 10
Registriert: 5. Dezember 2006 12:49

Background Pixmap bei Widget

Beitrag von pfu »

Hallo Zusammen!

bin am verzweifeln. Ich scheitere daran, dass ich einem Widget ein Hintergrundbild gebe.

seit Qt4 ist das ja jetzt ein wenig anderes...

dazu folgendes

meine funktion:

Code: Alles auswählen

void DragWidget::setBackgroundImage(QWidget *fp_widget, const QPixmap *fp_image) 
   { 
      QPalette newPalette(fp_widget->palette()); 
      newPalette.setBrush(QPalette::Base,       QBrush(*fp_image));
      newPalette.setBrush(QPalette::Background, QBrush(*fp_image));
      fp_widget->setPalette ( newPalette ); 
   }
diese Funktion möchte ich dann im Konstruktor des Widgets verwenden
kann mir BIITTE jemand sagen, wie der FUnktionsaufruf aussieht?

oder kann mir jemand einen einfacheren weg zeigen wie man einem Widget ein BackgroundWidget verpasst?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Sieht doch gut aus, oder was soll damit nicht passen?
pfu
Beiträge: 10
Registriert: 5. Dezember 2006 12:49

Beitrag von pfu »

ja die Funktion stimmt schon. glaub ich halt. hoff ich halt.

ich schaffts nur nicht die funktion aufzurufen, sodass ich im Widget ein Hintergrundbild habe. wenn ich die funktion im main aufrufe, wird kein hintergrundbild angezeigt, rufe ich die funktion im konstruktor des widgets auf, bekomme ich einen compiler fehler.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ein Compilerfehler hat nichts mit Qt zu tun sondern mit C++. Also würde ich sagen - lernt bitte erstmal C++.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pfu
Beiträge: 10
Registriert: 5. Dezember 2006 12:49

re

Beitrag von pfu »

jaja, a bissal aroganter gehts noch, oda?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wenn hier jemand Hilfe will, dann soll er auch die Frage präzise stellen und nicht die Hälfte weglassen (wie z.B. deine Compiler-Fehlermeldungen). Der Rest steht in der Signatur von Macman
pfu
Beiträge: 10
Registriert: 5. Dezember 2006 12:49

Beitrag von pfu »

ich hab geschrieben:

> diese Funktion möchte ich dann im Konstruktor des Widgets verwenden
> kann mir BIITTE jemand sagen, wie der FUnktionsaufruf aussieht?

ich weiß nicht wieso ihr mich so angehts?

ich hab die Funktion gepostet und möchte nur wissen, wie der funktionsaufruf im Kontruktor aussieht in dem ich das Hintergrundbild einfügen will.

vielleicht drück ich mich ja so undeutlich aus, wenn ja dann bitte ich vielmals um entschuldigung
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

upsala sagte es sollte so gehen - also probiere es aus. Wenn es nicht geht und Du einen Compilerfehler bekommst, zeig was Du gemacht hast und wir helfen Dir. Aber ein Compilerfehler kommt normalerweise nicht davon, dass man irgend einen Fehler in Qt gemacht hat.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pfu
Beiträge: 10
Registriert: 5. Dezember 2006 12:49

Beitrag von pfu »

hab jetzt ein tutorial gefunden:

http://my.opera.com/NoobSaibot/blog/show.dml/513685

ich hab dazu folgenden code rauskopiert.

Code: Alles auswählen

		QBrush *light      = new QBrush( QColor( "white" ) );
		// QBrush *window  = new QBrush( QPixmap( QApplication::applicationDirPath() + "/graphics/images/splash2.png" ) );


		QBrush *window     = new QBrush( QPixmap(":/images/boat.png") );

		QPalette *palette = new QPalette(
    	*light,
    	*light,
    	*light,
    	*light,
    	*light,
    	*light,
   		*light,
    	*light,
    	*window
		);

dW->setPalette( *palette );
lässt sich zwar compilieren, aber der Hintergrund vom widget bleibt immer noch weiß :(
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

gibt es ":/images/boat.png" auch in deiner Resource?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pfu
Beiträge: 10
Registriert: 5. Dezember 2006 12:49

Beitrag von pfu »

ja gibt es. und das bild wird auch angezeigt, wenn ich es als Label Pixmap ausgebe
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Abgesehen davon dass Du mit den ganzen 'new' - Zeugs memleaks erzeugst, sehe ich gerade keinen Fehler.
In deiner ersten Version hast Du base auch noch auf das Image gesetzt, das machst Du jetzt nicht mehr.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

QPalette::Base ist nicht notwendig, da ja nur der Background gesetzt werden soll. QPalette::Background ist eigentlich 'obsolete' man sollte stattdessen QPalette::Window nehmen. Funktioniert aber trotzdem. Also muß der Fehler woanders liegen.
ObeliX
Beiträge: 59
Registriert: 14. November 2007 17:47

Beitrag von ObeliX »

Code: Alles auswählen

QPalette qPalette(palette());
qPalette.setBrush(QPalette::Window,QBrush(QPixmap("Background.jpg")));
setPalette(qPalette);
also bei mir funzt das hier problemlos. im konstruktor des widgets (bei meinem test war es nen QMainWiindow) aufgerufen - fertig !


gruß Obel
Antworten