Mam niestandardowy widget do emulacji końcówek balonu. Aby wyświetlać się poprawnie, widget zależy od atrybutu QWidget Qt::WA_TranslucentBackground
. Moja aplikacja powinna działać na wszystkich głównych platformach (Windows XP, Windows 7, Linux, Mac), więc martwię się trochę: czy ten atrybut jest dostępny na wszystkich głównych platformach? Jeśli nie, czy mogę zapytać, czy tak jest? testAttribute()
tego nie robi. Zwraca tylko informację, czy atrybut został ustawiony, a nie czy ustawienie ma efekt.Qt :: WA_TranslucentBackground dostępne wszędzie?
Odpowiedz
Powinno to działać z wyjątkiem systemu Linux na X11, gdy jest skonfigurowany, aby nie obsługiwać ARGB. Zapoznaj się z dokumentacją QWidget:
Tworzenie Przezroczyste okna
Od Qt 4.5, możliwe stało się tworzenie okien z półprzezroczyste regionów w systemach okiennych, które obsługują komponowanie.
Aby włączyć tę funkcję w widgecie na najwyższym poziomie, ustaw jego Qt :: WA_TranslucentBackground atrybut z setAttribute() i upewnić się, że jego tło jest malowany niemętne kolorów w regionach chcesz być częściowo przezroczysty .
notatki Platforma:
X11: Funkcja ta polega na wykorzystaniu serwera X, który obsługuje wizualizacje ARGB i menedżera okien z opcją składania.
Okna: Widżet musi mieć ustawioną flagę okna Qt :: FramelessWindowHint, aby półprzezroczystość działała.
Warto również przeczytać akapit zatytułowany "Przezroczystość i podwójne buforowanie".
przypadku systemu Linux należy sprawdzić, czy jest włączony compositing:
bool QX11Info::isCompositingManagerRunning() [static]
np
#ifdef Q_WS_X11
if(QX11Info::isCompositingManagerRunning())
setAttribute(Qt::WA_TranslucentBackground);
#endif
To pytanie jest stare, ale to może pomóc komuś.
Dla każdego, kto błąka się w Google, jeśli potrzebujesz wsparcia dla niezespolonych komputerów, na przykład zaokrąglone menu ekranowe lub dymek, Qt [ShapedClock] (https://doc.qt.io/ qt-5/qtwidgets-widgets-shapedclock-example.html) przykład demonstruje, jak użyć 'setMask' do utworzenia okna nieprostokątnego bez kompozytu. – ssokolow
Zauważ, że czasami aby 'Qt :: WA_TranslucentBackground' działało w Linuksie bez' setMask', musisz również włączyć kilka dodatkowych atrybutów i flagę okna. https://stackoverflow.com/a/30596357/999943 – phyatt
- 1. Dlaczego "android:" wszędzie?
- 2. Sprawdź, czy klawiatura i mysz są dostępne z Qt
- 3. Git - Ignoruj node_modules folderu wszędzie
- 4. Jak wyłączyć skrót Szukaj wszędzie?
- 5. Dlaczego NIE chciałbym używać odwrotności wszędzie?
- 6. Czy można automatycznie wprowadzić zależność "wszędzie"?
- 7. Team Explorer wszędzie z uwierzytelnianiem Eclipse
- 8. Funkcja (metoda) Java dostępna wszędzie (globalna)
- 9. Symfony 2.1 REST API logowanie się wszędzie
- 10. Aplikacja Qt: nie udało się wczytać wtyczki platformy "Windows". Dostępne platformy to:
- 11. Programowanie Qt i portu szeregowego
- 12. Czy istnieje sposób na uniknięcie $ to-> wszędzie?
- 13. Dowolny powód, aby nie uderzyć słowa "zsynchronizowanego" wszędzie?
- 14. JPA2: Niewrażliwe na wielkość liter jak dopasowanie wszędzie
- 15. Znajdowanie wszędzie, gdzie wyliczenie jest konwertowane na ciąg
- 16. setWindowFlags (Qt :: WindowStaysOnTopHint) ukrywa okienko Qt
- 17. Obiekt/klasa Qt do pliku Qt ui
- 18. QT Jak osadzić aplikację w widgecie QT
- 19. Qt: Nieznany moduł (moduły) w QT: webview
- 20. Qt - setupUi()
- 21. Lista Android wszystkie dostępne zdjęcia
- 22. Role dostępne z uwierzytelnianiem Windows
- 23. net.schmizz.sshj.userauth.UserAuthException: Wyczerpane dostępne metody uwierzytelniania
- 24. Assembly.GetExecutingAssembly() dostępne w .NET Core?
- 25. Dostępne reduktory w elastycznej MapReduce
- 26. Java: Rdzenie dostępne dla JVM?
- 27. Pobierz dostępne typy w CoreCLR
- 28. Inne wdrożenia SecurityManager są dostępne?
- 29. NSLocale - uzyskaj wszystkie dostępne języki
- 30. Rodzaje szyfrowania dostępne w Javie?
Jak powszechny lub rzadki jest współczesny system Linux, który nie obsługuje ARGB? Czy mogę go jakoś zapytać? –
Nie sądzę, że będziesz mieć z tym problemy z najnowszym sprzętem/dystrybucjami. W każdym razie powinieneś uzyskać informacje używając xdpyinfo lub patrząc na plik konfiguracyjny xorg.conf. Być może masz problemy z wbudowanymi systemami linuksowymi. Daje to coś więcej: http://stackoverflow.com/questions/2434511/what-pixel-format-does-x-server-use. –