Bir widget'ın fare tarafından seçilip seçilmediğini belirten herhangi bir sinyal/yuva/işlev görmedim. Geçerli QWidget öğesinin seçilip seçilmediğini söyleyen böyle bir işlev var mı? Ve "geçerli widget seçildi" ile "çocuk widget'larından biri seçildi" nasıl ayırt edebilirim?Qt: Bir widget'ın seçilip seçilmediğini nasıl tespit edilir?
cevap
Odağı hasFocus()
işlevini kullanarak bir widget üzerinde kontrol edebilirsiniz. focus
özelliği, widget'ın klavye giriş odağına sahip olup olmadığını tutar. QApplication::focusWidget()
'u kullanarak odağı olan uygulamanın geçerli widget'ını da alabilirsiniz. Sen gibi odaklanmış Widget'a bir işaretçi alabilirsiniz: odaklı Widget QApplication::focusChanged(QWidget *old, QWidget *now)
sinyali değiştiğinde
QWidget * fw = qApp->focusWidget();
emitted.You Hiç odak değişikliği göre hoşunuza ne olduğu bir yuvaya bağlayabilirsiniz olduğunu.
Ben hasFocus() 'ın çıkışını kontrol etmek için bir qtimer kullandım 1Hz'de belirli "customWidget". Bu customWidget’i nasıl tıklarım önemli değil, çıktı her zaman yanlış mı? – Nyaruko
Bunun anlamı her zaman false döndürüyor mu? Widget'ınızın türü nedir? – Nejat
Merhaba, Bu widget'a odaklanmadan önceFocusPolicy ayarlamam gerektiğini buldum. Ancak, başka bir yere tıkladığımda (widget’ta değil) mevcut parçacığı nasıl temizleyebilirim? Bunu elle yapmak zorunda mıyım yoksa Qt bunun için bazı bayraklar var mı? – Nyaruko
Genel "QWidged" destek seçimini yapıyor mu? –
Seçerek odaklanmış mı demek istiyorsun? – Nejat
@Nejat, bu da Tamam. Benim elde etmek istediğim, bir Widget fare tarafından tıklandığında, belirli bir değeri fareye tıkladığında belirli bir değeri ayarlar, bu değeri 0 olarak ayarlar. – Nyaruko