2014-04-26 17 views
5

Sadece wxPython'dan PyQT'ye geçtim ve QTreeview ile ilgili bir sorun yaşıyorum. Genişletilebilir olan bölümlere kategorilere ayrılmış verileri görüntüleyecek bir QTreeview var, ancak bu TreeView içindeki veriler düzenlenebilir olmamalı, ancak kullanıcının verileri seçmesini sağlamalıyım (doubleclicking başka bir yöntemi yürütecek). Okumaktan nasıl emin olacağımı bilmiyorum ama aynı zamanda seçilebilir. Verileri tutmak için QStandardItemModel'i QStandardItem ile kullanıyorum.PyQT - QTreeview'i nasıl düzenlenemez, fakat aynı zamanda seçilebilir hale getirebilirsiniz?

Herhangi bir yardım çok takdir edilecektir. Eğer QSandardItem

item = QStandardItem('my_item_text') 
item.setEditable(False) 

oluştururken

cevap

11

Sen ağaç izin vermelidir Varsayılan olarak

my_treeview.setEditTriggers(QAbstractItemView.NoEditTriggers) 

arayarak Sen bütün ağaç için düzenleme devre dışı bırakabilir bunu yaparak düzenlenemez olmasını öğeleri tek tek ayarlayabilirsiniz Öğeleri seçmek için, ancak varsayılan davranışı değiştirmek istiyorsanız, ağaç görünümünde setSelectionMode() ve setSelectionBehavior() yöntemlerine bakmak isteyeceksiniz (iyi onlar QAbstractItemView için 01 vardırinherits. Bu yöntemler için C++ belgelerine genellikle daha eksiksiz olduğu için PyQt belgeleri üzerinde kullandığım here bulunabilir ve Python koduna dönüştürmek çok zor değildir. Sadece ::'un tüm örneklerini . ile değiştirin.

+1

Hızlı yanıt için teşekkürler! Bu benim ihtiyacım olana kadar çalıştı. Ayrıca, 'item.setFlags (QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable)' gibi bir şey yapabileceğinizi ve size aynı davranışı sağlayacağını öğrendim. Ancak tüm ağaç görüntülemesini bir defada düzenlemenin devre dışı bırakılması daha iyidir. – HawksFan21

+1

Sorun değil! Eminim, item.setEditable() 'item.setFlags() 'ı düşük düzeyde, ancak düzenleme ile ilgili olmayan mevcut bayrak kümesinin üzerine yazmadan. –