очистить выбор файла при нажатии на пустую область в Qtreeview - PullRequest
1 голос
/ 03 апреля 2020

Я использую QFileSystemModel и QTreeView в моем приложении (Pyqt5). Я искал способ, которым я могу очистить выбор файла при нажатии на белую пустую область ... чтобы быть более точным c мне нужен способ узнать, как проверить, нажимает ли пользователь на пустую область, чтобы не выбрать любой файл.

1 Ответ

1 голос
/ 03 апреля 2020

Вы должны обнаружить щелчок с помощью фильтра событий, а затем определить, связан ли действительный QModelIndex, а в случае пустой области он не связан с QModelIndex:

import os
import sys

from PyQt5 import QtCore, QtGui, QtWidgets


CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.model = QtWidgets.QFileSystemModel(self)
        self.view = QtWidgets.QTreeView()
        self.setCentralWidget(self.view)
        self.view.setModel(self.model)

        self.view.viewport().installEventFilter(self)

        path = CURRENT_DIR

        self.model.setRootPath(path)
        self.view.setRootIndex(self.model.index(path))

    def eventFilter(self, obj, event):
        if (
            obj is self.view.viewport()
            and event.type() == QtCore.QEvent.MouseButtonDblClick
        ):
            ix = self.view.indexAt(event.pos())
            if not ix.isValid():
                print("empty area")
                self.view.clearSelection()
        return super(MainWindow, self).eventFilter(obj, event)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...