2010-12-15 23 views
6

Próbuję wyświetlić ikonę "ostrzeżenia" obok QLineEdit, jeśli zawiera ona nieprawidłowe dane.
Próbowałem użyć QStyle::standardIcon(QStyle::SP_MessageBoxWarning), aby uzyskać standardową pixmapę i umieścić ją wewnątrz QLabel, aw niektórych przypadkach wydaje się, że działa. Podczas działania Gnome ikona jest wyświetlana poprawnie, ale podczas działania w KDE nie wyświetla się żadna ikona. Zakładam, że ikona ostrzeżenia po prostu nie jest zawarta w stylu używanym w KDE.Pokaż standardową ikonę ostrzeżenia w Qt4

Jaki jest preferowany sposób wyświetlania "standardowej" ikony ostrzeżenia w Qt? Czy istnieje lista, która pokazuje, które ikony są zawarte w każdym stylu? Jak mogę uzyskać ikonę ze stylu, o którym wiem, że zawiera ikonę ostrzeżenia?

Odpowiedz

9

Ostatni raz miałem podobny problem, znalazłem przydatne this Qt labs discussion. Poinformowano mnie, że teraz (od 4.6 wierzę) ma teraz funkcję QIcon::fromTheme, która umożliwia ładowanie ikony opartej na the Freedesktop.org Icon Naming Specification, a ponadto zapewnia ikonę zastępczą, która ma być używana, jeśli bieżący motyw nie ma ikony, o której mowa.

To, co zrobiłem, to włączenie bardzo prostych ikon do użycia jako trybu awaryjnego, a ogólnie określenie ikon tylko za pomocą ich nazw Freedesktop. To prawie zawsze zapewniało spójność tematyczną, a program wciąż działał w przypadkach, gdy ludziom brakowało ikon.

Jeśli chodzi o ikonę ostrzegawczą, to zgaduję/mam nadzieję, że każdy motyw musi mieć nazwę o nazwie "dialog-warning" i to jest to, czego szukasz.

Mam nadzieję, że to pomoże.

Edit: Oh, a w przypadku, gdy nie wiem, może to być przydatne, aby spojrzeć na przykład na Tango icon set aby uzyskać przybliżone pojęcie o tym, co nazwy freedesktop odpowiadać (choć to oczywiście theme- zależny).

5

Qt ma bundle a number of images, które są zasobami, których można używać we własnym kodzie. Te obrazy są nadzbiorem tych dostępnych przez standardIcon() Możesz chcieć sprawdzić, czy dany obraz jest zawarty w wersjach Qt, na które celujesz.

Wynik końcowy mógłby wyglądać następująco:

QPixmap pixmap(":/trolltech/styles/commonstyle/images/up-128.png"); 
// use pixmap as needed 
+0

Interesujące. Mogę sobie wyobrazić, że jest to bardzo użyteczne w dostarczaniu '' QIcon :: fromTheme'' z awarią. – gspr

Powiązane problemy