Exemplo n.º 1
0
    def data(self, index, role=Qt.DisplayRole):
        if not index.isValid():
            return None

        attr_dict = self.header_list[index.column()]  # 获取该列字段的配置
        data_obj = index.internalPointer()
        attr = attr_dict.get('key')
        if role in SETTING_MAP.keys():
            role_key = SETTING_MAP[role].get('config')  # role 配置的关键字
            formatter_from_config = attr_dict.get(role_key)  # header中该role的配置
            if not formatter_from_config and role not in [
                    Qt.DisplayRole, Qt.EditRole, Qt.ToolTipRole
            ]:
                # 如果header中没有配置该role,而且也不是 DisplayRole/EditRole,直接返回None
                return None
            else:
                value = apply_formatter(formatter_from_config,
                                        get_obj_value(data_obj, attr),
                                        data_obj)
            formatter_from_model = SETTING_MAP[role].get('formatter',
                                                         None)  # role 配置的转换函数
            result = apply_formatter(formatter_from_model, value)
            return result

        if role == Qt.CheckStateRole and attr_dict.get('checkable', False):
            state = get_obj_value(data_obj, attr + '_checked')
            return Qt.Unchecked if state is None else state
        return None
Exemplo n.º 2
0
def test_apply_formatter(formatter, result, args, kwargs):
    """Test for apply_formatter with all situation."""
    assert utils.apply_formatter(formatter, *args, **kwargs) == result