Button mit Icon
Button mit Icon
Moin Forum!
Ich moechte einen Knopf in meine Qt-Anwendung integrieren, der statt eines Textes ein Bild traegt. Zusaetzlich soll er keinen(!) Rahmen haben.
Nun stellt sich mir folgendes Problem:
Einem QPushButton kann ich die Eigenschaft setFlat uebergeben, bekomme aber als Icon nur ein winziges Bildchen zu sehen.
Einem QToolButton kann ich ein Icon übergeben, das auch in gewuenschter Groesse angezeigt wird; leider kennt dieser jedoch nicht die setFlat-Methode.
CodeSnippet:
QPixmap pmap("bild.jpg");
pmap = pmap.scaledToHeight(200);
QPushButton *knopf = new QPushButton(this);
knopf->setFlat(true);
knopf->setGeometry(100,100,200,200);
knopf->setIcon(pmap);
knopf->setIconSize(QSize(200,200));
Was mache ich falsch?
Wie erstelle ich einen QToolButton ohne Rand?
Fuer einen produktiven Tip bin ich sehr dankbar!
Einen Gruss aus dem sonnigen Ostfriesland,
Philipp
Ich moechte einen Knopf in meine Qt-Anwendung integrieren, der statt eines Textes ein Bild traegt. Zusaetzlich soll er keinen(!) Rahmen haben.
Nun stellt sich mir folgendes Problem:
Einem QPushButton kann ich die Eigenschaft setFlat uebergeben, bekomme aber als Icon nur ein winziges Bildchen zu sehen.
Einem QToolButton kann ich ein Icon übergeben, das auch in gewuenschter Groesse angezeigt wird; leider kennt dieser jedoch nicht die setFlat-Methode.
CodeSnippet:
QPixmap pmap("bild.jpg");
pmap = pmap.scaledToHeight(200);
QPushButton *knopf = new QPushButton(this);
knopf->setFlat(true);
knopf->setGeometry(100,100,200,200);
knopf->setIcon(pmap);
knopf->setIconSize(QSize(200,200));
Was mache ich falsch?
Wie erstelle ich einen QToolButton ohne Rand?
Fuer einen produktiven Tip bin ich sehr dankbar!
Einen Gruss aus dem sonnigen Ostfriesland,
Philipp
wie wär's wenn du ein QToolButton machst, der durchsichtig ist, abgesehen vom Text und Icon natürlich...
Falls du es nicht weiß, steht hier wie das leicht geht...
Falls du es nicht weiß, steht hier wie das leicht geht...
Glaube an eine Lösung, nur dann kannst du auch eine finden.
WoW!
Vier Stunden Doppelkopf und 5 Liter Wein lassen mich keine sinnvolle Antwort mehr erstellen. Dennoch danke fuer den Tip. Ich haette mir zwar eine einfachere Loesung gewuenscht (setzte doch einfach den QToolbutton auf setFlat(true)), dennoch werde ich morgen im nuechternen Zustand deine Idee versuchen zu realisieren.
<drunken>
warum zeigt der QPushButton Icons nur mit 16x16 Pixeln an???
</drunken>
Danke schon mal,
Gruss aus dem Fiesenland,
Philipp
Vier Stunden Doppelkopf und 5 Liter Wein lassen mich keine sinnvolle Antwort mehr erstellen. Dennoch danke fuer den Tip. Ich haette mir zwar eine einfachere Loesung gewuenscht (setzte doch einfach den QToolbutton auf setFlat(true)), dennoch werde ich morgen im nuechternen Zustand deine Idee versuchen zu realisieren.
<drunken>
warum zeigt der QPushButton Icons nur mit 16x16 Pixeln an???
</drunken>
Danke schon mal,
Gruss aus dem Fiesenland,
Philipp
Tut er gar nicht. Du kannst beliebig große Icons in einen Pushbutton packen.psiems hat geschrieben:warum zeigt der QPushButton Icons nur mit 16x16 Pixeln an???
Code: Alles auswählen
pushButton->setIcon(QPixmap(":icon.xpm"));
pushButton->setIconSize(QSize(32, 32));
Moin macman!
Genau das klappt leider nicht (siehe obigen Codeausschnitt). Ich erzeuge zwar eine Pixmap aus einem jpg, aber Pixmap sollte doch gleich Pixmap sein - egal ob aus jpg oder xpm erstellt. Oder?
Jedenfalls bekomme ich mit diesem Ansatz nur mini-Icons mit 16x16 Pixeln angezeigt. Eine Ueberpruefung mittels
qDebug() << knopf->iconSize();
gibt mir zwar die gewuenschte Groesse aus, aber die Darstellung wiederspricht den Zahlen...
Genau das klappt leider nicht (siehe obigen Codeausschnitt). Ich erzeuge zwar eine Pixmap aus einem jpg, aber Pixmap sollte doch gleich Pixmap sein - egal ob aus jpg oder xpm erstellt. Oder?
Jedenfalls bekomme ich mit diesem Ansatz nur mini-Icons mit 16x16 Pixeln angezeigt. Eine Ueberpruefung mittels
qDebug() << knopf->iconSize();
gibt mir zwar die gewuenschte Groesse aus, aber die Darstellung wiederspricht den Zahlen...
Nein. Laut Doku gibt es keinen Konstruktor der QPixmaps aus jpgs erstellen kann. Nimm QIcon dafür und konvertiere das in ein QPixmap. Oder noch besser, mach gleich eine Resource daraus.psiems hat geschrieben:Ich erzeuge zwar eine Pixmap aus einem jpg, aber Pixmap sollte doch gleich Pixmap sein - egal ob aus jpg oder xpm erstellt. Oder?
Hallo nochmal!
Nach laengerer Zeit komme ich mal wieder zum Proggen, bleibe jedoch leider wieder an dem alten Problem stehen:
Mein QPushButton weigert sich standhaft, ein Bild groesser als 16 x 16 Pixel anzuzeigen.
Auf den Rat von MacMan habe ich zwei Wege versucht.
Zum einen habe ich ein QImage aus meinem jpg-Bild gemacht, daraus eine Pixmap erzeugt und diese dem Button zugewiesen.
Ergebnis: Icon ist 16 x 16 Pixel
Zum anderen habe ich genau die vorgeschlagenen Codezeilen
pushButton->setIcon(QPixmap(":icon.xpm"));
pushButton->setIconSize(QSize(32, 32));
uebernommen, um aus einem bereits vorhandenen xpm-Bild einen Button mit Icon zu erstellen.
Ergebnis: Icon ist 16 x 16 Pixel
Wo ist der Fehler???
Liegt es eventuell an meiner Qt-Version? Aktuell im Einsatz ist Qt 4.0.1 auf einem Macintosh - ein Qt-Fehler vielleicht? Obwohl ich eher den Fehler zwischen meinen Ohren vermute, lade ich mir mal die neue Version runter.
Wie funktioniert das mit der Icon-Engine? In der Doku steht sowas drin, das sie immer Pixmaps in MAXIMAL der gewuenschten Groesse rausgibt, sie koennen aber auch kleiner sein. Muss ich dieser Engine vielleicht etwas anderes mitteilen, gibt die standardmaessig nur 16 x 16 Pixel Pixmaps zurueck?
Fuer einen konstruktiven Hinweis waere ich echt dankbar!
Nach laengerer Zeit komme ich mal wieder zum Proggen, bleibe jedoch leider wieder an dem alten Problem stehen:
Mein QPushButton weigert sich standhaft, ein Bild groesser als 16 x 16 Pixel anzuzeigen.
Auf den Rat von MacMan habe ich zwei Wege versucht.
Zum einen habe ich ein QImage aus meinem jpg-Bild gemacht, daraus eine Pixmap erzeugt und diese dem Button zugewiesen.
Ergebnis: Icon ist 16 x 16 Pixel
Zum anderen habe ich genau die vorgeschlagenen Codezeilen
pushButton->setIcon(QPixmap(":icon.xpm"));
pushButton->setIconSize(QSize(32, 32));
uebernommen, um aus einem bereits vorhandenen xpm-Bild einen Button mit Icon zu erstellen.
Ergebnis: Icon ist 16 x 16 Pixel
Wo ist der Fehler???
Liegt es eventuell an meiner Qt-Version? Aktuell im Einsatz ist Qt 4.0.1 auf einem Macintosh - ein Qt-Fehler vielleicht? Obwohl ich eher den Fehler zwischen meinen Ohren vermute, lade ich mir mal die neue Version runter.
Wie funktioniert das mit der Icon-Engine? In der Doku steht sowas drin, das sie immer Pixmaps in MAXIMAL der gewuenschten Groesse rausgibt, sie koennen aber auch kleiner sein. Muss ich dieser Engine vielleicht etwas anderes mitteilen, gibt die standardmaessig nur 16 x 16 Pixel Pixmaps zurueck?
Fuer einen konstruktiven Hinweis waere ich echt dankbar!
-
madRenEGadE
- Beiträge: 52
- Registriert: 10. Februar 2006 15:15
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
geschafft
Ist zwar bloede, aber nicht so schlimm:
Der Fehler liegt anscheinend nicht bei mir, sondern im MacStyle! Benutze ich fuer den QPushButton einen anderen Style (motif, win), klappt die Darstellung wie gewuenscht.
Danke allen fuer die Hinweise!
Gruss
Philipp
Der Fehler liegt anscheinend nicht bei mir, sondern im MacStyle! Benutze ich fuer den QPushButton einen anderen Style (motif, win), klappt die Darstellung wie gewuenscht.
Danke allen fuer die Hinweise!
Gruss
Philipp
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten: