Ich muss ein Menü erstellen, das den Hintergrund eines QWidget ändert. Ich möchte ein QIcon, das die ausgewählte Farbe darstellt, in die QActions platzieren, die das QMenu füllen. Ich möchte Photoshop nicht mehr rauslassen und die Icons manuell malen müssen. Ist es möglich, ein einfaches Symbol zu programmieren, das mit einer bestimmten Farbe gefüllt ist? Auf diese Weise kann ich bei Bedarf eine beliebige Anzahl von QActions haben und ich muss in Photoshop keine ganze Reihe von Icons erstellen. \Einfache Farbe füllen QIcons in Qt
Antwort
Sie können ein QIcon aus einer QPixmap erstellen. QPixmap kann mit einer bestimmten Größe erstellt und dann mit 'fill' gefüllt werden.
Zum Beispiel ein rotes 100x100 Symbol zu erstellen:
QPixmap pixmap(100,100);
pixmap.fill(QColor("red"));
QIcon redIcon(pixmap);
gerade herausgefunden, wie Farbe zu einer anderen Farbe von Symbol zu ändern. Daher muss das Bild des Symbols aus einer Farbe (hier: ‚black‘), die eine pixmap und seine Maskierung Fähigkeit, sich in eine andere Farbe verwenden (wie ‚rot‘) umgewandelt werden kann:
pixmap = QPixmap(filename)
mask = pixmap.createMaskFromColor(QColor('black'), Qt.MaskOutColor)
pixmap.fill((QColor('red')))
pixmap.setMask(mask)
btNew = QToolButton()
btNew.setIcon(QIcon(pixmap))
Cool, obwohl createMaskFromColor (QColor ('transparent'), Qt.MaskInColor) besser für mich funktioniert – falkb
Das Thema ist mit C++ markiert, aber das ist kein gültiger C++ - Code. Ich möchte es bearbeiten, aber die Kritiker haben es aus Gründen abgelehnt, die ich nicht kenne. Außerdem funktionierte die Lösung für mich nach der Portierung nach C++. – bns
Ich denke, Sie haben Recht - ich habe nicht erkannt, dass die Frage zu C++ verwandt war - aber ich denke auch, dass es nicht eine bereits vorhandene Antwort so viel ändern soll ... Und ich weiß nicht, ob Ihr Code ist stabil - so kann ich es nicht für mich selbst akzeptieren. Ich denke, du solltest dir selbst antworten! Danke für den Tipp. – Henhuy
Dies zu füllen nur die transparenten Teile des Bildes, oder? Ich meine, kann man damit die transparenten Teile eines QIcon mit Farbe füllen? – SexyBeast
Ich fürchte, ich verstehe es nicht. Dieser Code erstellt ein vollständig neues Symbol, das ein festes rotes Quadrat ist. – cgmb