本文整理汇总了Python中PyQt4.QtGui.QDirModel.index方法的典型用法代码示例。如果您正苦于以下问题:Python QDirModel.index方法的具体用法?Python QDirModel.index怎么用?Python QDirModel.index使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt4.QtGui.QDirModel
的用法示例。
在下文中一共展示了QDirModel.index方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: FileSystemBrowser
# 需要导入模块: from PyQt4.QtGui import QDirModel [as 别名]
# 或者: from PyQt4.QtGui.QDirModel import index [as 别名]
class FileSystemBrowser(QTreeView):
"""simple file system browser"""
def __init__(self):
QTreeView.__init__(self)
self.model = QDirModel()
self.setModel(self.model)
self.setSortingEnabled(True)
self.setAlternatingRowColors(True)
self.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.setAutoExpandDelay(500)
i = self.model.index(os.getcwd())
self.scrollTo(i)
self.expand(i)
self.setCurrentIndex(i)
for i in range(self.model.columnCount()):
self.resizeColumnToContents(i)
self.connect(self, SIGNAL("doubleClicked(QModelIndex)"), self.itemAction)
self.connect(self, SIGNAL("customContextMenuRequested(QPoint)"), self.showContextMenu)
def itemAction(self, mi):
"""default action (on doubleclick) for item at model index mi"""
fi = self.model.fileInfo(mi)
if self.model.isDir(mi):
return
path = str(fi.absoluteFilePath())
if not SimuVis4.Globals.fileTypeActions.openFile(path):
self.openExternal(path)
def showContextMenu(self, pos):
"""show context menu for item at pos"""
mi = self.indexAt(pos)
fi = self.model.fileInfo(mi)
m = QMenu()
self.path = str(fi.absoluteFilePath())
if self.model.isDir(mi):
m.addAction(QCoreApplication.translate('DataBrowser', 'Refresh'),
lambda x=mi: self.model.refresh(x))
else:
for a in SimuVis4.Globals.fileTypeActions.getActions(self.path):
# this is weird, ... but it works
m.addAction(a[0], lambda x=a[1]: x(self.path))
m.addSeparator()
m.addAction(QCoreApplication.translate('DataBrowser', 'Open external'),
self.openExternal)
a = m.exec_(self.mapToGlobal(pos))
def openExternal(self, path=None):
if not path:
path = self.path
QDesktopServices.openUrl(QUrl.fromLocalFile(path))
示例2: FileSystemBrowser
# 需要导入模块: from PyQt4.QtGui import QDirModel [as 别名]
# 或者: from PyQt4.QtGui.QDirModel import index [as 别名]
class FileSystemBrowser(QTreeView):
"""simple file system browser, no actions yet"""
def __init__(self):
QTreeView.__init__(self)
self.model = QDirModel()
self.setModel(self.model)
self.setSortingEnabled(True)
i = self.model.index(os.getcwd())
self.scrollTo(i)
self.expand(i)
self.setCurrentIndex(i)
for i in range(self.model.columnCount()):
self.resizeColumnToContents(i)
示例3: FileController
# 需要导入模块: from PyQt4.QtGui import QDirModel [as 别名]
# 或者: from PyQt4.QtGui.QDirModel import index [as 别名]
class FileController(object):
def __init__(self, manager, opusDataPath, parentWidget, listen_to_menu = True):
self.addTree(opusDataPath, parentWidget)
self.currentColumn = None
self.currentIndex = None
self.classification = ""
self.manager = manager
if listen_to_menu:
QObject.connect(self.treeview,
SIGNAL("customContextMenuRequested(const QPoint &)"),
self.process_custom_menu)
def addTree(self, opusDataPath, parentWidget):
self.containerWidget = parentWidget
self.opusDataPath = opusDataPath
self.treeview = QTreeView()
filters = QStringList()
filters.append("*.*")
#filters.append("*.py")
#filters.append("*.shp")
#filters.append("*.tif")
self.model = QDirModel(filters, QDir.Files|QDir.AllDirs|QDir.NoDotAndDotDot, QDir.Name)
self.treeview.setModel(self.model)
if self.opusDataPath:
self.treeview.setRootIndex(self.model.index(self.opusDataPath))
self.treeview.setColumnWidth(0,200)
self.treeview.hideColumn(2)
self.treeview.hideColumn(3)
self.containerWidget.layout().addWidget(self.treeview)
# Hook up to the mousePressEvent and pressed
self.treeview.setContextMenuPolicy(Qt.CustomContextMenu)
def close(self):
self.treeview.hide()
self.containerWidget.layout().removeWidget(self.treeview)
return True
def process_custom_menu(self, position):
raise Exception('Method processCustomMenu is not implemented')
示例4: EkdSaveDialog
# 需要导入模块: from PyQt4.QtGui import QDirModel [as 别名]
# 或者: from PyQt4.QtGui.QDirModel import index [as 别名]
class EkdSaveDialog(QDialog):
'''
EkdSaveDialog : Classe représentant la boite de dialogue utiliser lors de
l'enregistrement des modification sur un fichier donné
attributs : suffix - Suffix utilisé en filtre
filter - Filtre (déduit à partir du suffix)
chemin - Chemin du dernier fichier enregistré
multiple - va-t-on enregistrer plus d'un fichier ?
(ex: extraction d'image d'une vidéo)
méthodes : getFile - Invoque la boite de dialogue et retourne
le fichier saisi
'''
### Pourquoi avoir réimplémenté cette classe au lieu de passer par
### QFileDialog ?
## Correction du bug de consommation mémoire
##
## Explication du problème :
## Par défaut un QFileDialog utilise un QFileSystemModel qui lui
## crée un QWatchFileSystem
## Hors QWatchFileSystem scan régulièrement les changement
## dans le répertoire courant
## Ce phénomène provoque une réaction en chaine :
## 1 - je choisi mon répertoire de destination d'enregistrement
## de mes images
## 2 - ffmpeg se lance
## 3 - ffmpeg crée un fichier dans l'arborescence
## 4 - QWatchFileSystem (est toujours dans le répertoire courant)
## détecte un changement
## et recharge l'ensemble du contenue du répertoire
## 5 - goto 3 jusqu'à plus de mémoire ou fin du process ffmpeg
##
##
def __init__(self, parent, path = None, suffix = '', title = u"Sauver",
multiple = False, mode = None):
if type(suffix) == tuple or type(suffix) == list :
sfilter=""
for s in suffix :
sfilter += "*"+s+" "
self.filter=sfilter[:-1]
# Si on a plusieur suffix, on prend le premier par défaut pour
# la sauvegarde
self.suffix = suffix[0]
else :
self.suffix = suffix
self.filter = "*" + self.suffix
QDialog.__init__(self, parent)
self.setWindowTitle(title)
self.multiple = multiple
self.mode = mode
if not path:
if self.mode == "image" :
path = EkdConfig.get("general", "image_output_path")
elif self.mode == "video" :
path = EkdConfig.get("general", "video_output_path")
elif self.mode == "audio" :
path = EkdConfig.get("general", "sound_output_path")
else :
path = unicode(QDir.homePath())
# Nom du répertoire courant
self.location = QLabel("<b>%s</b>" % path)
# Variable permettant de savoir à tout moment le répertoire courant.
self.currentDir = path
self.mkdirButton = QPushButton(u" Créer un répertoire")
self.mkdirButton.setIcon(QIcon("Icones" + os.sep + "add_sub_task.png"))
if int(EkdConfig.get("general", "show_hidden_files")) :
#print "hidden shown"
EkdPrint(u"hidden shown")
shf = QDir.Hidden
else : shf = QDir.Readable
# Liste des fichiers
self.dirList = QListView()
sorting = QDir.DirsFirst
if int(EkdConfig.get("general", "ignore_case")):
sorting |= QDir.IgnoreCase
self.sorting = sorting
self.flags = QDir.Files | QDir.Readable | shf
self.dirModel = QStandardItemModel()
self.dirList.setModel(self.dirModel)
self.updateDir(path)
self.dirList.setWrapping(True)
#panneau latéral
self.dirTree = QTreeView()
self.dirModelLight = QDirModel(QStringList(""), QDir.AllDirs |
QDir.NoDotAndDotDot | shf, QDir.DirsFirst |
QDir.Name | QDir.IgnoreCase)
self.dirTree.setModel(self.dirModelLight)
self.dirTree.setColumnHidden(1,True)
self.dirTree.setColumnHidden(2,True)
self.dirTree.setColumnHidden(3,True)
self.dirTree.setMaximumWidth(200)
self.dirTree.setMinimumWidth(150)
self.dirTree.setCurrentIndex(self.dirModelLight.index(path))
self.dirTree.resizeColumnToContents(0)
#.........这里部分代码省略.........