2015-03-02 13 views
5

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?

+1

Genel "QWidged" destek seçimini yapıyor mu? –

+1

Seçerek odaklanmış mı demek istiyorsun? – Nejat

+0

@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

cevap

6

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.

+0

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

+0

Bunun anlamı her zaman false döndürüyor mu? Widget'ınızın türü nedir? – Nejat

+0

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

İlgili konular