Widgets: Transparents und Hintergrundbild

Code-Schnippsel, oder Tipps und Tricks, die einem beim Programmieren mit Qt helfen können.
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag von shader76 »

die funktion ist ind er hilfe.cpp

und die funktion setbackgroundimage(parent,img);
rufe ich im konstruktor von hilfe auf.

der prototyp ist auch in der header von hilfe.h

--->BLACKOUT :roll:
Zuletzt geändert von shader76 am 12. April 2006 15:50, insgesamt 2-mal geändert.
-shader76-
-Visual Studio.Net 2003 & QT4.1
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

shader76 hat geschrieben:Konstruktor:

Code: Alles auswählen

Funktion:
[code]void SetBackgroundImage ( QWidget *fp_widget, const QPixmap *img )
{
	QPalette newPalette = fp_widget->palette ( );
	newPalette.setBrush(QPalette::Base,QBrush (*img));
	newPalette.setBrush(QPalette::Background,QBrush (*img));
	fp_widget->setPalette ( newPalette );
}
Die ist aber nicht in deiner Hilfe Klasse, wenn da kein Hilfe::SetBackgroundImage dabeisteht.
Ich denke, das duerfte der einzige Fehler sein :D

Goos
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag von shader76 »

habs auch grade gemerkt :oops:
die funktion habe ich gerade verbessert

Code: Alles auswählen

void [b]Hilfe[/b]::SetBackgroundImage ( QWidget *fp_widget, const QPixmap *img )

nun stürzt er aber komplett ab bzw er setzt das Bild als Hintergrund in die GUI wo der hilfe button ist, soll es aber in die GUI reinmachen welcher durch den hilfe button aufgerufen wird.
-shader76-
-Visual Studio.Net 2003 & QT4.1
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

Du uebergibst ja auch dein Parent als Widget, also was erwartest du?

Goos
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag von shader76 »

GOOS ich bin ja sooo...... :oops:

sorry für die vielen fragen aber ich stehe dermaßen im zeitdruck!!!!
Die DEADLINE ist bald und es ist noch so viel zu tun.

und das an meinem 30.Geburtstag

beschäftige ich erst seit knapp5 wochen mit qt und habe hier eine menge
gelernt.

Vielen Dank

King Regard :!:
Zuletzt geändert von shader76 am 12. April 2006 16:41, insgesamt 1-mal geändert.
-shader76-
-Visual Studio.Net 2003 & QT4.1
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

Lass dich nur nicht zu sehr unter Druck setzen, dann kriegst alles sicher auch viel schneller hin :)

Goos
goofy
Beiträge: 38
Registriert: 4. April 2006 15:40

Beitrag von goofy »

Hallo zusammen,

hab das gleiche Problem wir ihr, ich brauch einen transparenten Hintergrund!
Hab mir den Code vom Anfang angesehen und sieht auch gut aus!
Leider funktioniert er bei mir nicht, bis jetzt noch nicht rausgefunden wieso!

Allerdings finde ich diese Lösung etwas aufwendig um einen Hintergrund transparent zu machen!

Daher hab mal bei den Trolls geschaut, was die so sagen und siehe da

http://doc.trolltech.com/qq/qq16-background.html :D

Hier wird gezeigt wie man widgets oder label einfach mit von Qt (daher auch optimierten) Attributen und Methoden druchsichtig macht!
:shock:

Aber leider gehts bei mir wieder nicht, weil ich über ein ActiveX Control was malen soll!

naja

Grüße
goofy

edit: vergessen das h von http zur url dazu tun ... :oops:
Fritzle
Beiträge: 1
Registriert: 4. September 2006 16:42

Beitrag von Fritzle »

Hallo, hab mir die Datei mal in mein Progrämle reingebaut, und tut auch so wie es soll - zumindest eingeschränkt.

Ich möchte in meinem GUI einen Textbrowser mit verschiedenen Hintergrundbilder ausstattten, je nachdem welchen Knopf ich drücke
(also z.B. Knopf eins gibt mir eine Information über einen Elefanten, daher möchte ich einen elefanten als hintergrundbildchen habe, knopf zwei das selbe, nur mit ner Maus, usw.)

Ich habe mir eine Datei geschrieben, in der lauter QStrings stehen, die den Pfad der entsprechenden Bildchen enthalten, diese Bilder werden auch entsprechend gesetzt im Code, je hnachdem welches Tier ich auswähle.

Wenn ich aber nun folgendes mache

QTextBrowser *TB_info = new QTextBrowser;
QPixmap *hintergrund = new QPixmap;
QString bild(Tierart->s_getHintergrundbild());
hintergrund->load(bild);
SetBackgroundImage(TB_info,hintergrund);

so wird nur eine graue Fläche angezeigt. als Hintergrundbild angezeigt. Weiss jemand, woran das liegen könnte?

EDIT: Hat sich erledigt, rumspielen hilf meist doch am besten :)


EDIT2:
So, hab nun leider auch gleich die nächsten beiden Probleme. Ich kann nun wunderbar die verschiedensten Hintergrundbilder in den Textbrowser reinladen. ABER: die Bilder werden gekachelt dargestellt. Ich hätte aber gerne, dass dieses Bild nur EINMAL dargestellt wird(Problem No.1) und nach Möglichkeit auch zentriert im Textbrowser(Problem No.2a) oder alternativ an beliebiger Stelle relativ zum Browserfensterrand(Problem No. 2b).

Hat jemand ne Idee, wie man das macht? Hab es schon mit dem pixmap.scaled() Befehl versucht, aber da pasiet gar nix, wenn ich da einfach mal verschiedene Werte reinsetz.
Wer nur einen Hammer als Werkzeug hat, für den sieht jedes Problem wie ein Nagel aus.
nobody
Beiträge: 7
Registriert: 3. Oktober 2006 14:04

Beitrag von nobody »

hey fritzle

hab das selbe problem wie du

hab nur eine graue Fläche als Hintergrund

Wie hast du das gelöst??

EDIT: habs auch hingekriegt
bei mir hat er einfach das file nicht gefunden :)
musste absoluten pfad angeben

nobody
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

wey hatte nicht gedacht, dass das noch einer verwendet... :)

wenn noch einer das wirklcih verwendet und probs hat kann man mir ne PM schicken... adnn kann ich verklären, wie ich das mittlerweile (QT4.2) machen würde :)
Glaube an eine Lösung, nur dann kannst du auch eine finden.
kp
Beiträge: 14
Registriert: 2. Mai 2007 10:17

Transparente Widgets - setAlpha

Beitrag von kp »

Funktioniert der Aufruf setAlpha() mit dem QColor-Object (aus unten aufgeführtem Beispiel, siehe auch ganz oben in diesem FragePunkt)
Ich verwende Qt 3.3.7 und habe eine solche Methode in der Klasse QColor nicht gefunden.

Ich suche eine Möglichkeit mit Transparenz in eine QPixmap zu zeichnen. Als QBrush oder direkt per QColor oder ganz anders.

Vielleicht hat jemand eine Idee und kann mir weiterhelfen!

QBrush BrushSetAlpha ( QBrush f_brush, const int f_alpha )
{
QColor color = f_brush.color ( );
color.setAlpha ( f_alpha );
f_brush.setColor ( color );

return f_brush;
}
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

erm, ich hab da ma ne bitte...
könnte einer mal ne funktionierende version von einem widget hier attachen, ich würde mir das gerne mal anschauen, bin aber zu faul, die codeschnipsel zusammenzusuchen. ich wäre sehr dankbar.

lg markus
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

für ein Widget (nicht toplevel) oder ein Window?
Glaube an eine Lösung, nur dann kannst du auch eine finden.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

hat sich schon alles erledigt, guckt mal ins wiki.
Antworten