Beispiel #1
0
class StringListModel(QAbstractListModel):
    def __init__(self, stringList, parent=None):
        super(StringListModel, self).__init__(parent)
        self.stringList = QStringList(stringList)

    # int rowCount(const QModelIndex &parent = QModelIndex()) const;
    # QVariant data(const QModelIndex &index, int role) const;
    # QVariant headerData(int section, Qt::Orientation orientation,
    #                     int role = Qt::DisplayRole) const;

    def rowCount(self, parent=QModelIndex()):
        return self.stringList.count()

    def data(self, index, role=Qt.DisplayRole):

        if (not index.isValid()):
            return QVariant()

        if (index.row() >= self.stringList.count):
            return QVariant()

        if (role == Qt.DisplayRole):
            return self.stringList[index.row()]
        else:
            return QVariant()

    def headerData(self, section, orientation, role=Qt.DisplayRole):

        if (role != Qt.DisplayRole):
            return QVariant()

        if (orientation == Qt.Horizontal):
            return QString("Column %1").arg(section)
        else:
            return QString("Row %1").arg(section)
Beispiel #2
0
class StringListModel(QAbstractListModel):
    def __init__(self, stringList, parent=None):
        super(StringListModel, self).__init__(parent)
        self.stringList = QStringList(stringList)

    # int rowCount(const QModelIndex &parent = QModelIndex()) const;
    # QVariant data(const QModelIndex &index, int role) const;
    # QVariant headerData(int section, Qt::Orientation orientation,
    #                     int role = Qt::DisplayRole) const;
    # 编辑功能用到的两个函数
    # Qt::ItemFlags flags(const QModelIndex &index) const;
    # bool setData(const QModelIndex &index, const QVariant &value,
    #              int role = Qt::EditRole);

    def rowCount(self, parent=None, *args, **kwargs):
        return self.stringList.count()

    def data(self, index, role=Qt.DisplayRole):

        if (not index.isValid()):
            return QVariant()

        if (index.row() >= self.stringList.count):
            return QVariant()

        if (role == Qt.DisplayRole or role == Qt.EditRole):
            return self.stringList[index.row()]
        else:
            return QVariant()

    def headerData(self, section, orientation, role=Qt.DisplayRole):

        if (role != Qt.DisplayRole):
            return QVariant()

        if (orientation == Qt.Horizontal):
            return QString("Column %1").arg(section)
        else:
            return QString("Row %1").arg(section)

    # 以下是实现编辑功能添加的两个函数
    def flags(self, index):

        if (not index.isValid()):
            return Qt.ItemIsEnabled

        return super(StringListModel, self).flags(index) | Qt.ItemIsEditable

    def setData(self, index, value, role=Qt.DisplayRole):

        if (index.isValid() and role == Qt.EditRole):

            self.stringList.replace(index.row(), value.toString())
            self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"), index,
                      index)
            return True
        return False
Beispiel #3
0
    def _create_control ( self, parent ):
        # If the caller provided a default path instead of a default directory
        # and filename, split the path into it directory and filename
        # components.
        if ((len( self.default_path )      != 0) and
            (len( self.default_directory ) == 0) and
            (len( self.default_filename )  == 0)):
            default_directory, default_filename = \
                os.path.split( self.default_path )
        else:
            default_directory = self.default_directory
            default_filename  = self.default_filename

        # Convert the filter:
        keep    = True
        filters = QStringList()

        for f in self.wildcard.split( '|' ):
            if keep and f:
                filters << f

            keep = not keep

        # Set the default directory:
        if not default_directory:
            default_directory = QDir.currentPath()

        dlg = QFileDialog( parent, self.title, default_directory )

        dlg.setViewMode( QFileDialog.Detail )
        dlg.selectFile( default_filename )
        dlg.setFilters( filters )

        if self.wildcard_index < filters.count():
            dlg.selectFilter( filters[ self.wildcard_index ] )

        if self.action == 'open':
            dlg.setAcceptMode( QFileDialog.AcceptOpen )
            dlg.setFileMode( QFileDialog.ExistingFile )
        elif self.action == 'open files':
            dlg.setAcceptMode( QFileDialog.AcceptOpen )
            dlg.setFileMode( QFileDialog.ExistingFiles )
        else:
            dlg.setAcceptMode( QFileDialog.AcceptSave )
            dlg.setFileMode( QFileDialog.AnyFile )

        return dlg
 def _initModel(self):
     from PyQt4.QtCore import QStringList
     self._reposModel.clear()
     stringList = QStringList([u"Active", u"Path", u"Auto Update", u"Status"])
     self._reposModel.setColumnCount(stringList.count())
     self._reposModel.setHorizontalHeaderLabels(stringList)
Beispiel #5
0
class StringListModel(QAbstractListModel):
    def __init__(self,stringList,parent = None):
        super(StringListModel, self).__init__(parent)
        self.stringList = QStringList(stringList)

    # int rowCount(const QModelIndex &parent = QModelIndex()) const;
    # QVariant data(const QModelIndex &index, int role) const;
    # QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
    # // 编辑功能用到的两个函数
    # Qt::ItemFlags flags(const QModelIndex &index) const;
    # bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
    #
    # // 插入和删除行用到的两个函数
    # bool insertRows(int position, int rows, const QModelIndex &index = QModelIndex());
    # bool removeRows(int position, int rows, const QModelIndex &index = QModelIndex());

    def rowCount(self,parent= QModelIndex()):
        return self.stringList.count()

    def data(self,index,role= Qt.DisplayRole):

        if (not index.isValid()):
            return QVariant()

        if (index.row() >= self.stringList.count):
            return QVariant()

        if (role == Qt.DisplayRole):
            return self.stringList[index.row()]
        else:
            return QVariant()
    def headerData(self,section, orientation, role= Qt.DisplayRole):

        if (role != Qt.DisplayRole):
            return QVariant()

        if (orientation == Qt.Horizontal):
            return QString("Column %1").arg(section)
        else:
            return QString("Row %1").arg(section)

    # 以下是实现编辑功能添加的两个函数

    def flags(self,index):
        if (not index.isValid()):
            return Qt.ItemIsEnabled

        return super(StringListModel, self).flags(index) | Qt.ItemIsEditable

    def setData(self, index, value, role= Qt.DisplayRole):

        if (index.isValid() and role == Qt.EditRole):
            self.stringList.replace(index.row(), value.toString())
            self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"),index, index)
            return  True
        return False

    # 以下是插入和删除行用到的两个函数
    def insertRows(self,position, rows, parent = QModelIndex()):
        self.beginInsertRows(QModelIndex(), position, position+rows-1)

        for i in range(rows):
            self.stringList.insert(position, "")

        self.endInsertRows()
        return True

    def removeRows(self,position, rows, parent = QModelIndex()):

        self.beginRemoveRows(QModelIndex(), position, position+rows-1)

        for i in range(rows):
            self.stringList.removeAt(position)

        self.endRemoveRows()
        return True