Potrzebuję stworzyć menu, które zmienia tło QWidget. Chciałbym umieścić QIcon reprezentujący wybrany kolor w QActions, które zapełnia QMenu. Nie chciałbym wyskakiwać z Photoshopa i malować ikon ręcznie. Czy można zaprogramować prostą ikonę wypełnioną określonym kolorem? W ten sposób mogę mieć dowolną liczbę QActions w razie potrzeby i nie będę musiał tworzyć całej garści ikon w Photoshopie. \Proste wypełnianie kolorem QIcons w Qt
Odpowiedz
Możesz skonstruować QIcon z QPixmap. QPixmap może być skonstruowany przy danym rozmiarze, a następnie wypełniony kolorem za pomocą "wypełnienia".
Na przykład aby stworzyć czerwony 100x100 ikonę:
QPixmap pixmap(100,100);
pixmap.fill(QColor("red"));
QIcon redIcon(pixmap);
Tylko zorientowali się, jak zmienić kolor z ikoną do jakiegokolwiek innego koloru. Dlatego obraz ikony musi składać się z jednego koloru ciało stałe (tutaj: „czerni”), które mogą być przekształcane za pomocą pixmapę i jego zdolność maskowania, w innym kolorze (na przykład „Red”):
pixmap = QPixmap(filename)
mask = pixmap.createMaskFromColor(QColor('black'), Qt.MaskOutColor)
pixmap.fill((QColor('red')))
pixmap.setMask(mask)
btNew = QToolButton()
btNew.setIcon(QIcon(pixmap))
Cool, choć createMaskFromColor (QColor ("przezroczysty"), Qt.MaskInColor) działa lepiej dla mnie – falkb
Temat jest oznaczony C++, ale nie jest to poprawny kod C++. Chciałbym go edytować, ale recenzenci odrzucili go z powodów, których nie znam. Poza tym rozwiązanie działało dla mnie po przeniesieniu go do C++. – bns
Myślę, że masz rację - nie rozpoznałem, że pytanie było związane z C++ - ale uważam też, że nie ma to na celu zmiany już istniejącej odpowiedzi, która ... I nie wiem, czy twój kod jest stabilny - więc nie mogę tego zaakceptować dla siebie. Myślę, że powinieneś odpowiedzieć sobie! Dzięki za podpowiedź. – Henhuy
- 1. QPainter :: drawLine i QPainter :: drawText z innym kolorem w Qt
- 2. Różnica między kolorem a kolorem w `.vimrc`
- 3. Dokowanie/Wypełnianie w WPF
- 4. Proste wielowątkowość z Qt: czy robię to dobrze?
- 5. Nasycenie kolorem BufferedImage
- 6. Ładowanie wtyczek Qt podczas statycznego linkowania do Qt?
- 7. Wypełnianie listView w/AsyncTask
- 8. Wypełnianie kształtu gradientem w CGContext
- 9. Wypełnianie wskaźnika znaku w struct
- 10. Wypełnianie tablicy ObjectId w Mongoose
- 11. Proste szyfrowanie w PHP
- 12. Wypełnianie powyżej/poniżej linii działki matplotlib
- 13. Wypełnianie dynamicznych tablic VBA
- 14. Przekształć RGBA z ukrytym kolorem w RGB?
- 15. Sterowanie kolorem zanikających krawędzi w ListViews
- 16. Wypełnianie wektora par
- 17. Wypełnianie wielokąta listy widoków
- 18. wypełnianie tablicy losową liczbą
- 19. Wypełnianie Datagrida dynamicznymi Kolumnami
- 20. Wypełnianie ASP.NET MVC DropDownList
- 21. Wypełnianie prostokąt zmętnienia android
- 22. Android - Wypełnij ścieżkę kolorem częściowo
- 23. Problem z kolorem czcionki Gmaila
- 24. Kluczowanie kolorem z openframeworks/opengl
- 25. Jak wypełnić obszar wykresu kolorem
- 26. Zaokrąglone rect z kolorem Gradient
- 27. Wypełnianie klasy ze słownika
- 28. Automatyczne wypełnianie dni tygodnia
- 29. Problemy renderowania * bardzo * proste częściowe w * bardzo * proste aplikacji
- 30. Kombinowany pędzel z jednolitym kolorem
to wypełnią tylko przezroczyste części obrazu, prawda? Czy można to wykorzystać do wypełnienia przezroczystych części QIcon kolorem? – SexyBeast
Obawiam się, że nie rozumiem. Ten kod tworzy zupełnie nową ikonę, która jest solidnym czerwonym kwadratem. – cgmb