0

私は2つのソースからデータを取得しています。1つはXMLファイルの保存パスからのもので、もう1つQFileSystemModelはユーザーがパスを表示できなかった場合に作業したいものでQLineEdit、ユーザーはパスを参照できるはずです!! 最初の文字は明らかに "/" または Windows の場合は 1 文字です。

例として、XMLData をファイルからパスの defaultList に簡単に置き換えました。

以下のコードはしばらくは機能しますが、セグメンテーション エラーが発生します。

from PyQt4.Qt import Qt, QObject,QLineEdit
from PyQt4.QtCore import pyqtSlot,SIGNAL,SLOT
from PyQt4 import QtGui, QtCore

import sys

class DirLineEdit(QLineEdit, QtCore.QObject):
    """docstring for DirLineEdit"""


def __init__(self):
    super(DirLineEdit, self).__init__()
    self.defaultList = ['~/Development/python/searchMethod', '~/Development/Nuke_python',
'~/Development/python/openexr', '~/Development/python/cpp2python',
 '~/Development/python/using_argparse', '~Development/python/listFilter']
    self.textChanged.connect(self.switchCompleter)
    self._pathsList()

def focusInEvent(self, event):
    QtGui.QLineEdit.focusInEvent(self, event)
    self.completer().complete()

def switchCompleter(self):
    if len(self.text()) >= 1:
        self.__dirCompleter()
    if len(self.text()) == 0:
        self.__pathsList()

def __dirCompleter(self):
    dirModel = QtGui.QFileSystemModel() 
    dirModel.setRootPath(QtCore.QDir.currentPath()) 
    dirModel.setFilter(QtCore.QDir.AllDirs | QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Files) 
    dirModel.setNameFilterDisables(0) 
    completer = QtGui.QCompleter(dirModel, self)    
    completer.setModel(dirModel)
    completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) 
    self.setCompleter(completer)

def _pathsList(self):
    completerList = QtCore.QStringList()
    for i in self.defaultList:
        completerList.append(QtCore.QString(i))
    lineEditCompleter = QtGui.QCompleter(completerList)
    lineEditCompleter.setCompletionMode(QtGui.QCompleter.UnfilteredPopupCompletion)
    self.setCompleter(lineEditCompleter)



app = QtGui.QApplication(sys.argv)
smObj = DirLineEdit()
smObj.show()    
app.exec_()

上記のコードは Segmentation fault: 11 Is there a better way I can use both completer with one を返しますか?

4

0 に答える 0