From 5adde406d199ae5dc8b3e3b74f554fb6d7836bce Mon Sep 17 00:00:00 2001 From: Yesen Date: Wed, 18 Oct 2023 10:22:48 +0300 Subject: [PATCH] add search filter using QlineEdit line --- main.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index d47a641..cecf3ea 100755 --- a/main.py +++ b/main.py @@ -5,6 +5,10 @@ class Widget(QtWidgets.QWidget): def __init__(self, *args, **kwargs): super(Widget, self).__init__(*args, **kwargs) + self.filter_edit = QtWidgets.QLineEdit() + self.filter_edit.setPlaceholderText("Фильтр по именам") + self.filter_edit.setClearButtonEnabled(True) # Добавляем кнопку очистки + self.treeview = QtWidgets.QTreeView() # делаем домашнюю папку пользователя - начальной @@ -21,15 +25,25 @@ class Widget(QtWidgets.QWidget): self.treeview.setRootIndex(self.dirModel.index(path)) self.treeview.clicked.connect(self.on_clicked_item) - hlay = QtWidgets.QHBoxLayout(self) - hlay.addWidget(self.treeview) + # Устанавливаем размеры и расположение виджетов + а = QtWidgets.QVBoxLayout(self) + а.addWidget(self.filter_edit) + а.addWidget(self.treeview) + + # Подключаем событие изменения текста в QLineEdit к обновлению фильтра + self.filter_edit.textChanged.connect(self.update_filter) + + def update_filter(self): + text = self.filter_edit.text() + self.dirModel.setNameFilters([text]) # Устанавливаем фильтр по имени - # функция обработки кликов def on_clicked_item(self, index): path = self.dirModel.filePath(index) + # print(f"Selected: {path}") if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) w = Widget() + w.setWindowTitle("Dir Tree View") w.show() sys.exit(app.exec_()) \ No newline at end of file