Piszę aplikację C++ o nazwie qt
. Mam wiele przycisków, które chcę wzajemnie się wykluczać - tylko jeden może być przełączany na raz. Generalnie używam do tego QButtonGroup - zapewnia to logiczny sposób zarządzania zestawami przycisków. Kiedy ktoś zostanie przyciśnięty, poprzednio przyciśnięty zostaje zniszczony, co jest właśnie pożądanym zachowaniem.Alternatywa dla QButtonGroup, która nie pozwala na wybór?
Tym razem jednak pozwolę, aby grupa została całkowicie odznaczona. Niestety, wydaje się to być zabronione przez QButtonGroup
:
wykluczają: bool
Ta nieruchomość posiada czy grupa przycisk jest wyłączna.
Jeśli ta właściwość jest prawdziwa, tylko jeden przycisk w grupie może być sprawdzany w dowolnym momencie. Użytkownik może kliknąć dowolny przycisk, aby sprawdzić, czy jest to , a ten przycisk zastąpi istniejący jako sprawdzony przycisk w grupie.
W ekskluzywnej grupie, użytkownik nie może odznaczyć aktualnie zaznaczonego przycisku , klikając na niego; zamiast tego, inny przycisk w grupie musi być ustawiony na , aby ustawić nowy zaznaczony przycisk dla tej grupy.
Oczywiście istnieje kilka sposobów obejścia tego problemu. Zastanawiam się, czy istnieje gotowa alternatywa dla QButtonGroup
, która pozwala na takie zachowanie, 1) nie odkrywam koła i 2) Mogę pozostać w obrębie idiomatic qt
, aby ułatwić zarządzanie projektami w przyszłości.
Wszelkie sugestie?
AFAIK Nie.Szczególnie w tym przypadku Kod wymagany do uzyskania Twojej funkcjonalności jest bardzo minimalny. Wyłącz wyłączną właściwość z grupy przycisków, gdy chcesz, aby wszystkie były odznaczone w filtrze zdarzeń/zdarzeniu naciśnięcia przycisku myszy, a obiekt nadawcy jest taki sam, jak bieżący naciśnięty przycisk. W przeciwnym razie włącz wyłączną własność, jeśli nie już. – Viv
Trzy lata później, ale zauważyłem dzisiaj, że korzystając z autoexclusive zamiast QButtonGroup i Qt 4.8.6 mogę odznaczyć wybrany przycisk radiowy. Nie wiem, czy to błąd, czy nie. – Phlucious