2024-09-25 14:18:11 发布
网友
我在我的应用程序(Pyqt5)中使用QFileSystemModel和QTreeView。我正在寻找一种方法,当按下白色空白区域时,我可以清除文件选择。。。为了更具体,我需要知道如何检查用户是否按下空白区域以不在任何文件中选择。p>
您必须使用事件筛选器检测单击,然后确定是否关联了有效的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_())
您必须使用事件筛选器检测单击,然后确定是否关联了有效的QModelIndex,如果是空白区域,则它与QModelIndex不关联:
相关问题 更多 >
编程相关推荐