PyQt

2009-05-11 25 views
9

'daki onay kutularının listesiHer bir öğenin bazı etiketli bir onay kutusu olduğu bir QListView görüntülemek istiyorum. Onay kutuları her zaman görünür olmalıdır. Düşünebildiğim tek yol özel bir temsilci ve QAbstractListModel kullanıyor. Daha basit yollar var mı? Bunu yapan en basit snippet'i sağlayabilir misiniz? peşinPyQt

Teşekkür

cevap

10

Kendi modelini yazıyorsanız, sadece flags() yönteminden dönüş değeri Qt.ItemIsUserCheckable bayrak içerir ve data() yönteminden Qt.CheckStateRole için geçerli bir değer döndürür sağlamak .

Eğer QStandardItemModel sınıfını kullanırsanız

, her öğenin setFlags() yönteme geçmesi olanlarda Qt.ItemIsUserCheckable bayrak içerir ve onun setData() yöntemiyle Qt.CheckStateRole onay durumunu ayarlayın. interaktif Python oturumunda

, aşağıdakileri yazın:

from PyQt4.QtGui import * 

model = QStandardItemModel() 
item = QStandardItem("Item") 
item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) 
item.setData(QVariant(Qt.Checked), Qt.CheckStateRole) 
model.appendRow(item) 

view = QListView() 
view.setModel(model) 
view.show() 
21

Ben PyQT posta listesindeki David Boddie tarafından sağlanan yöntem kullanılarak sona erdi.

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
import sys 
from random import randint 


app = QApplication(sys.argv) 

model = QStandardItemModel() 

for n in range(10):     
    item = QStandardItem('Item %s' % randint(1, 100)) 
    check = Qt.Checked if randint(0, 1) == 1 else Qt.Unchecked 
    item.setCheckState(check) 
    item.setCheckable(True) 
    model.appendRow(item) 


view = QListView() 
view.setModel(model) 

view.show() 
app.exec_() 

Not: İşte onun koduna dayalı bir çalışma snippet'ine setCheckState bir onay rolüyle setData çağrısını değiştirdi ve yerine bayraklar setCheckable kullandı.

+1

Böyle bir öğe/onay kutusu açıldığında hangi sinyaller (varsa) yayılır? Http://www.pythoncentral.io/pyside-pyqt-tutorial-qlistview-and-qstandarditemmodel/, kendime cevap vermek için – marcin

+3

, 'model.itemChanged' kullanılabilir. – marcin