:?: Icons bzw. Symbole für Buttons, Menus etc...

Alles rund um die Programmierung mit Qt
Antworten
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

:?: Icons bzw. Symbole für Buttons, Menus etc...

Beitrag von john »

Hallo,

wie kann man z. B. ein Icon für einen Button in die *.exe Datei fest integrieren? Hier z. B. die Icon Zuweisung für den "Such-Knopf":

...
SearchButton->setIconSet(QPixmap::fromMimeSource("./search.jpg"));
...

so, soweit so gut. Wenn ich nun das Programm starte sieht alles so aus wie gewollt, solange die serch.jpg sich auch im Programmverzeichnis befindet. Wenn diese Datei jedoch nicht mehr vorhanden ist, fehlt das Icon für den "Such-Knopf". Da gibt es doch bestimmt eine Möglichkeit, dieses Bild fest zu integrieren, damit man nicht immer die *.jpg Datei mit liefern muss.

Wie macht man das?

Vielen Dank!

Grüße John
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

du konvertierst deine Bilddatei in das XPM-Format z.B bild.xpm

dann in deinen Sourcen:

#include "bild.xpm"
QPixmap p(bild);

button.setPixmap(bild);


.xpm-dateien sind Textdateien in denen ein Bild in einem C-Array abgespeichert wird. Der name der entsprechenden Variable steht am Anfang der Datei.
pm_Snake
Beiträge: 86
Registriert: 7. September 2004 11:33

Beitrag von pm_Snake »

Da musst du halt dann die xpm-Datei mitliefern ;)

Aber n paar Dateien mehr in nem Projekt ist auch nicht die Welt...
>>[-]>[-]>[-]>[-]<<<<<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

ne, eben nicht...

die Bilder werden in die EXE reingelinkt. Das ist ja auch der Sinn der Sache...
pm_Snake
Beiträge: 86
Registriert: 7. September 2004 11:33

Beitrag von pm_Snake »

Ach, k.
Das ist dann die Art, wo ein neuer header mit im Projekt ist mit ungefähr diesem Inhalt:

# = <rgb schwarz>;
* = <rgb rot>;
$ = <rgb gold>;

############
############
***************
***************
$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$

Das XPM wäre dann eine Deutschlandflagge..

Stimmts?^^
>>[-]>[-]>[-]>[-]<<<<<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag von john »

Vielen Dank für die Antworten! Aber das geht auch irgendwie mit

Button->setIconSet(QPixmap::fromMimeSource("./search.jpg"));

? Ich habe das Buch "Programming with QT 3". Die fertig übersetzten Beispiele haben die Icons fest in der Exe integriert, auch in so einem Text-Array. Muss nochmal nachsehen, ob ich ein passendes Beispiel finde. Hat das vielleicht was mit der *.pro Datei zu tun? Oder liegt es daran, dass die Non-Comercial-Version das nicht macht?

Vielen Dank!

Grüße John
lori
Beiträge: 16
Registriert: 9. August 2004 13:06

Beitrag von lori »

Hallo,
ich habe mom. ein Problem bzgl. Pixmap, include xpm und QLabel
Als QLabel soll dann die Pixmap picture.xpm verwendet werden.

Code: Alles auswählen

QLabel *zeile1 = new QLabel( win );
QPixmap myPixmap3=QPixmap("./picture.xpm","XPM",QPixmap::Color);
zeile1->setPixmap(myPixmap3);
das funktioniert auch soweit, nur würde ich jetzt das xpm mit include einbinden, dass ich das Bild nicht dabei haben muss und das ganze übersichtlicher wird.

Code: Alles auswählen

#include "picture.xpm"
QLabel *zeile1 = new QLabel ( win );
QPixmap myPixmap3(picture);
zeile1->setPixmap(myPixmap3);
Das Bild wird gefunden und included, beim Kompilieren bekomme ich dann
`char*image[194]' defined but not used und 'picture undeclared'
bei #include picture.xpm sollte doch picture definiert werden, oder sehe
ich das falsch.
needle
Beiträge: 33
Registriert: 28. September 2004 14:38
Kontaktdaten:

Beitrag von needle »

moin,

man kann im Designer für ein Widget im Context Menu unter Form Settings die Einstellung vornehmen, ob man Pixmaps inline im Widget-Code oder im Project-Image-File (Einzusehen im Menu unter Project/Image Collection) speichern möchte. Ausserdem kann man noch eine eigene Funktion angeben, wobei ich jetzt auch nicht adhoc sagen kann was da hinter steckt.

Wenn ich pixmaps so einbinde kompiliert er mir die auch in mein Binary, so daß ich dort keine grafik files mehr einzeln zur Funktion mitgeben muß.
(gespeichert werden die dann inline als xpm.gz in dem jeweiligem .ui File)

Ich hoffe ich habe jetzt nicht am Thema vorbei geschrieben.

gruss,


needle
needle
Beiträge: 33
Registriert: 28. September 2004 14:38
Kontaktdaten:

Beitrag von needle »

@lori:

es geht AFAIR auch so:

Code: Alles auswählen

aus Doku:
QPixmap QPixmap::fromMimeSource ( const QString & abs_name ) [static] 
=>

Code: Alles auswählen

QPixmap myPixmap3=QPixmap::fromMimeSource( "picture.xpm" );

gruss,

needle
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

lori hat geschrieben:Hallo,

Code: Alles auswählen

#include "picture.xpm"
QLabel *zeile1 = new QLabel ( win );
QPixmap myPixmap3(picture);
zeile1->setPixmap(myPixmap3);
Das Bild wird gefunden und included, beim Kompilieren bekomme ich dann
`char*image[194]' defined but not used und 'picture undeclared'
bei #include picture.xpm sollte doch picture definiert werden, oder sehe
ich das falsch.
Schau dir mal dein picture.xpm an. Das Bild heisst nicht 'picture' sondern 'image... Also musst Du auch myPixmap(image); nehmen :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
lori
Beiträge: 16
Registriert: 9. August 2004 13:06

Beitrag von lori »

Hi Christian,

:oops: - bin aber auch dämlich ;) hast Recht, ist natürlich als image[] und nicht picture[] definiert. Besten Dank!
Ich bekomme jetzt noch folgende Fehlermeldung

warning: no newline at end of file
das habe ich behoben.

es scheint noch irgendwas falsch zu laufen, jetzt bleibt noch:

error: call of overloaded `QPixmap(char*[194])' is ambiguous
/usr/include/qt3/qpixmap.h:76: error: candidates are: QPixmap::QPixmap(const QPixmap&) <near match>
/usr/include/qt3/qpixmap.h:74: error: QPixmap::QPixmap(const QByteArray&) <near match>
/usr/include/qt3/qpixmap.h:73: error: QPixmap::QPixmap(const char**) <near match>
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Hier steht des Rätsels Lösung :)
http://doc.trolltech.com/3.3/qpixmap.html#QPixmap-7

QPixmap myPixmap3((const char**)image);
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
lori
Beiträge: 16
Registriert: 9. August 2004 13:06

Beitrag von lori »

yups! - den QT Assistent hab ich eigentlich zum Nachsehen ;)
dachte aber nicht, dass ich die Lösung da drin finde... danke dir!
Antworten