Найти - Пользователи
Полная версия: Фильрация qtreeview в зависимоси от картинки у элемента
Начало » GUI » Фильрация qtreeview в зависимоси от картинки у элемента
1
marina932
Есть qtreeview в котором много элементов и нужно отфитровать и оставить там только элементы с одной (заданной) картиной.
Можно это сделать или нет?
from PyQt4 import Qt
def clickme():
    model.item(0).setIcon(icons[0])
app = Qt.QApplication([])
icons = (Qt.QIcon('icons/1455634123_tick_green.png'), Qt.QIcon('icons/1455634138_tick_red.png'))
w = Qt.QWidget()
item = Qt.QStandardItem('text')
item.setIcon(Qt.QIcon(icons[1]))
item1 = Qt.QStandardItem('text1')
item1.setIcon(icons[0])
model = Qt.QStandardItemModel()
model.setHorizontalHeaderLabels([u'Заголовок'])
model.appendRow(item)
model.appendRow(item1)
tree = Qt.QTreeView(w)
tree.setModel(model)
btn = Qt.QPushButton("Click me",w)
Qt.QObject.connect(btn,Qt.SIGNAL("clicked()"),clickme)
grid = Qt.QGridLayout(w)
grid.setMargin(0)
grid.addWidget(tree,0,0)
grid.addWidget(btn,1,0)
w.move(0,0)
w.show()
app.exec_()
vic57
#!/usr/bin/env python
# -*- coding:utf8 -*-
from PyQt4 import Qt
def select():
    count = model.rowCount()
    rootindex = model.index(0,0)
    index = box.currentIndex()
    for i in xrange(count):
        tree.setRowHidden(i,model.index(i,0,rootindex),False)
    if index == 1:
        for i in xrange(count):
            icon = model.item(i).icon()
            if icon.cacheKey() != iconkeys[0] :
                tree.setRowHidden(i,model.index(i,0,rootindex),True)
    elif index == 2:
        for i in xrange(count):
            icon = model.item(i).icon()
            if icon.cacheKey() != iconkeys[1] :
                tree.setRowHidden(i,model.index(i,0,rootindex),True)
        
app = Qt.QApplication([])
model = Qt.QStandardItemModel()
model.setHorizontalHeaderLabels([u'Заголовок'])
icons = (Qt.QIcon('red.png'),Qt.QIcon('blue.png'))
iconkeys = (icons[0].cacheKey(),icons[1].cacheKey())
for i in xrange(5):
    s = 'text' + str(i)
    item = Qt.QStandardItem(s)
    if i%2 :
        item.setIcon(icons[0])
    else:
        item.setIcon(icons[1])
    model.appendRow(item)
 
w = Qt.QWidget()
tree = Qt.QTreeView(w)
tree.setModel(model)
tree.setSortingEnabled(True)
box = Qt.QComboBox(w)
box.addItems([u'Все',u'Красный',u'Синий'])
box.setItemIcon(1,icons[0])
box.setItemIcon(2,icons[1])
box.currentIndexChanged.connect(select)
grid = Qt.QGridLayout(w)
grid.setMargin(0)
grid.addWidget(tree,0,0,1,2)
grid.addWidget(box,1,0,1,1)
w.move(0,0)
w.show()
app.exec_()
примерно так
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB