def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.model = ProcCodeTreeModel() self.tree_view = QtGui.QTreeView(self) self.tree_view.setIndentation(15) #reduce default of 20 self.tree_view.setModel(self.model) find_icon = QtGui.QIcon(':icons/search.png') self.search_line_edit = QtGui.QLineEdit() self.search_but = QtGui.QPushButton(find_icon,"") self.search_but.setMaximumWidth(40) search_frame = QtGui.QFrame() layout = QtGui.QHBoxLayout(search_frame) layout.setMargin(0) layout.setSpacing(0) layout.addWidget(self.search_line_edit) layout.addWidget(self.search_but) layout = QtGui.QVBoxLayout(self) layout.setMargin(3) layout.addWidget(self.tree_view) layout.addWidget(search_frame) self.tree_view.doubleClicked.connect(self.item_double_clicked) self.search_line_edit.returnPressed.connect(self.search_but.click) self.search_but.clicked.connect(self.search_items)
class ProcCodeWidget(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.model = ProcCodeTreeModel() self.tree_view = QtGui.QTreeView(self) self.tree_view.setIndentation(15) #reduce default of 20 self.tree_view.setModel(self.model) find_icon = QtGui.QIcon(':icons/search.png') self.search_line_edit = QtGui.QLineEdit() self.search_but = QtGui.QPushButton(find_icon,"") self.search_but.setMaximumWidth(40) search_frame = QtGui.QFrame() layout = QtGui.QHBoxLayout(search_frame) layout.setMargin(0) layout.setSpacing(0) layout.addWidget(self.search_line_edit) layout.addWidget(self.search_but) layout = QtGui.QVBoxLayout(self) layout.setMargin(3) layout.addWidget(self.tree_view) layout.addWidget(search_frame) self.tree_view.doubleClicked.connect(self.item_double_clicked) self.search_line_edit.returnPressed.connect(self.search_but.click) self.search_but.clicked.connect(self.search_items) def sizeHint(self): return QtCore.QSize(120, 300) def item_double_clicked(self, index): item = self.model.data(index, QtCore.Qt.UserRole) if item: self.parent().emit(QtCore.SIGNAL("Code Selected"), item) def search_items(self): search_field = self.search_line_edit.text() result, index = self.model.find_description(search_field) if result: self.tree_view.setCurrentIndex(index) else: QtGui.QMessageBox.information(self, _("results"), "'%s' %s"% (search_field, _("not found")))