示例#1
0
def add_row(model: QAbstractItemModel, param: tuple):
    """
    @param: model
    @param: param - tuple(row, model data, user data)
    """
    row_num = param[0]
    row = param[1]
    user_data = param[2]
    model.insertRow(row_num)
    if user_data:
        model.setData(model.index(row_num, 0), user_data, Qt.UserRole)

    for k, item in enumerate(row):
        model.setData(model.index(row_num, k), item if item else "")
示例#2
0
 def setModel(self, model: QAbstractItemModel):
     super().setModel(model)
     for row in range(model.rowCount()):
         for col in range(model.columnCount()):
             span = model.span(model.index(row, col))
             if span.height() > 1 or span.width() > 1:
                 self.setSpan(row, col, span.height(), span.width())
示例#3
0
def map_value_to_row(qt_model: QAbstractItemModel, column):
    '''
    qt_modelの各行(row)に対して、{引数column列目の値: row}からなる辞書を返します。

    Parameters:
    qt_model -- QAbstractItemModel型
        e.g.
            Fruit |  Color
            ------+------
        0   Apple |  Red
        1   Berry |  Blue
    
    column -- int型 列番号
        e.g. 0

    return: dict型
        e.g. {'Apple': 0, 'Berry': 1}

    '''
    number_of_rows = qt_model.rowCount()
    value_row_pair = {}

    for row in range(number_of_rows):
        index = qt_model.index(row, column)
        value = qt_model.data(index)

        if not value in value_row_pair.keys():
            value_row_pair[value] = row

    return value_row_pair
示例#4
0
def serialize_settings_model(model: QAbstractItemModel) -> str:
    """Convert a SettingsModel into a data format that can be written to a file.

    Note:
        This only generates and returns a string. You are still responsible to
        write that data to a file.

    """
    config_data = configparser.ConfigParser()
    config_data["GLOBAL"] = {}
    global_data: Dict[str, str] = OrderedDict()

    for i in range(model.rowCount()):
        key = model.index(i, 0).data()
        value = model.index(i, 1).data()
        global_data[key] = value
    config_data["GLOBAL"] = global_data

    with io.StringIO() as string_writer:
        config_data.write(string_writer)
        return string_writer.getvalue()
示例#5
0
def export_to_file_from_table_view(file_name: str, title: tuple, sheet_name: str, model: QAbstractItemModel):
    file = xlwt.Workbook()
    sheet1 = file.add_sheet(sheet_name, cell_overwrite_ok=True)

    for index, header in enumerate(title):
        sheet1.write(0, index, header, set_style('Times New Roman', 220, True))
    default = set_style('SimSun', 180, True, True, True)
    for row in range(model.rowCount()):
        for col in range(model.columnCount()):
            index = model.index(row, col)
            data = model.data(index)
            sheet1.write(row + 1, col, data, default)
    file.save(file_name)
示例#6
0
    def indexForModel(
        idx: QModelIndex,
        desiredModel: QAbstractItemModel,
    ):
        if desiredModel is None:
            return idx.model().index(-1, -1)

        modelIndex = idx
        while modelIndex.model() != desiredModel:
            if isinstance(modelIndex.model(), QAbstractProxyModel):
                modelIndex = modelIndex.model().mapToSource(modelIndex)
            else:
                break
        if modelIndex.model() == desiredModel:
            return modelIndex
        return desiredModel.index(-1, -1)