2013-11-22 29 views
5

Qt Designer yazılımını kullanarak bir kullanıcı arayüzü hazırladım ve sekme sırasını "düzenleme sırası düzenle" modunu kullanarak ayarladım.Odaklama (veya sekme) siparişi verin

Şimdi ne bilmek isterim (başka bir nedenden dolayı, çok önemli değil) ui'deki belirli bir QWidget sekmesinin sırasını nasıl alabilirim?

int nb = widget1->getTabOrder(); 

cevap

10

bir tamsayı olarak sekme sırasını almak için bir yolu yoktur:

Birkaç widget'lar var ve sekme sırası ayarlandı dersem Yani, böyle bir şey yapmak bir yolu yoktur. UIC aracının ui dosyanızdan oluşturduğu C++ kodunu incelerseniz, birkaç kez QWidget::setTabOrder() numaralı telefonu arayacak ve bu yöntem iki QWidget işaretçisini çekecektir. Böylece, Qt dahili olarak sekme sırasını bir tamsayı olarak değil, QWidget işaretçisinin zincirleme listesi olarak kaydetmez.

Bu zincirleme listesini QWidget::nextInFocusChain() ve QWidget::previousInFocusChain() ile sorgulayabilirsiniz. Bu size, widget içindeki tüm çocuk widget'larını doğru sırayla içeren tüm odak zincirini verir. Daha sonra, QWidget::focusNextPrevChild() işlevinin iç uygulaması gibi, focusPolicy, etkin durum ve görünür durumunu kontrol ederek gerçek sekme sırası listesini alabilirsiniz. Burada bir tamsayı indeksine ihtiyacınız varsa, bu elde edilen sekme sırası listesinden indeksleri hesaplayan bir algoritma tasarlamanız gerekir.

İlgili konular