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 "")
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())
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
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()
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)
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)