Seite 1 von 1
Button mit Icon
Verfasst: 28. Januar 2006 13:39
von psiems
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
Verfasst: 29. Januar 2006 00:10
von Esleborn
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...
Verfasst: 29. Januar 2006 02:06
von psiems
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
Verfasst: 30. Januar 2006 07:16
von macman
psiems hat geschrieben:warum zeigt der QPushButton Icons nur mit 16x16 Pixeln an???
Tut er gar nicht. Du kannst beliebig große Icons in einen Pushbutton packen.
Code: Alles auswählen
pushButton->setIcon(QPixmap(":icon.xpm"));
pushButton->setIconSize(QSize(32, 32));
Verfasst: 30. Januar 2006 23:11
von psiems
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...
Verfasst: 31. Januar 2006 07:38
von macman
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?
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.
Verfasst: 18. Februar 2006 13:56
von psiems
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!
Verfasst: 18. Februar 2006 17:17
von madRenEGadE
ist dein button auch groß genug? ich weiß zwar nicht wie sich der button verhält wenn man ein größeres icon als die größe des buttons nimmt aba vielleicht liegt ja darin dein problem
Verfasst: 18. Februar 2006 18:18
von psiems
Jau, der Button ist gross genug. Egal, ob er kleiner, groesser oder gleich gross ist, das Ergebnis ist ein Mini.Icon mit 16 x 16 Pixeln.
Verfasst: 18. Februar 2006 19:12
von BartSimpson
In den Change logs von Qt 4.1.1 steht unter Mac X:
- QPushButton
Make Mac style obey the icon size set by setIconSize().
Make sure buttons are not shown as default on inactive
windows.
ob es damit was zu tun hat???
geschafft
Verfasst: 19. Februar 2006 17:04
von psiems
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
Verfasst: 19. Februar 2006 17:09
von BartSimpson
Dann muste halt auf 4.1.0 erhöhen:)