前端组件化之tabPage

前端组件化之tabPage


该组件主要是简化多tab页面切换时的冗余代码,写成组件后,开发者不需要关系页面切换的逻辑,只需要书写Page1,Page2等页面即可

tabPage

在这里插入图片描述

代码分析

<template>
    <section class="page-container">
        <el-col :span=" 24" class="bg-fff padd-all-20 dis-flex flex-dir-column h-100pre pad-t-0">
            <!-- 本页title -->
            <el-col class="mar-b-20 cr-333 fz-18 page-header" :span="24">
                <el-tabs v-model="tabName" @tab-click="handleTab">
                    <el-tab-pane v-for="item in tabpanes" :label="item.label" :name="item.name" :key="item.name"></el-tab-pane>
                </el-tabs>
            </el-col>
            <!-- 第一行 -->
            <el-col :span="24" class="flex-auto">
                <component :is="componentId" ref="myComponent" v-loading="loading"></component>
            </el-col>
        </el-col>
    </section>
</template>

<script>
export default {
    name: 'tab-page',
    props: {
        tabpanes: {
            type: Array,
            required: true,
            default: function() {
                return [
                    // 格式为{ name: '1', label: 'tab1', components: Page1 },
                ]
            }
        }
    },
    data() {
        return {
            tabName: '',
            componentId: '',
            loading: false
        }
    },
    methods: {
        handleTab() {
            this.loading = true
            this.tabpanes.forEach(v => {
                if (v.name === this.tabName) {
                    this.componentId = v.components
                    setTimeout(() => {
                        this.loading = false
                    },500)
                }
            })
        }
    },
    created() {
        this.tabName = this.tabpanes[0].name
        this.handleTab()
    }
}
</script>

<style scoped>
.page-container {
    height: 100%;
    overflow-y: hidden;
    padding: 20px;
    box-sizing: border-box;
}
.bg-fff {
    background: #fff;
}
.padd-all-20 {
    padding: 20px;
}
.dis-flex {
	display: flex;
}
.flex-dir-column {
    flex-direction: column;
}
.page-header {
    min-height: 20px;
}
.h-100pre {
    height: 100%;
}
.pad-t-0 {
    padding-top: 0 !important;
}
.mar-b-20 {
    margin-bottom: 20px;
}
.cr-333 {
    color: #333;
}
.fz-18 {
    font-size: 18px;
}
</style>

组件使用

<template>
    <tab-page :tabpanes="tabpanes"></tab-page>
</template>

<script>
import Page1 from './page1.vue' //tab1 对应的组件
import Page2 from './page2.vue' //tab2 对应的组件
import TabPage from '@/components/page/tabPage.vue'	//引入tabPage组件

export default {
    name: 'test-page',
    components: {
        'tab-page': TabPage
    },
    data() {
        return {
        	/**
        	* tabpanes 为必参数,其中
        	* name:与选项卡绑定值 value 对应的标识符,表示选项卡别名
        	* label:选项卡标题
        	* components:选项卡对应渲染的组件
        	**/
            tabpanes: [
                { name: 'page1', label: 'tab1', components: Page1 },
                { name: 'page2', label: 'tab2', components: Page2 }
            ]
        }
    },
    methods: {}
}
</script>

<style>
</style>

属性

参数说明类型可选值默认值
tabpanes子组件信息Array
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt的TabPage是一种布局组件,用于实现标签页切换的效果。它可以让我们在一个窗口内部划分出多个标签页,并在标签之间快速切换,方便地组织界面元素。 TabPage是Qt提供的一种容器类,它可以容纳其他的QWidget派生类。通过向TabPage中添加QWidget,我们可以在每个标签页中放置不同的控件、布局或自定义界面元素。 TabPage的使用步骤如下: 1. 创建一个QTabWidget实例,并将其作为父控件。 2. 创建多个QWidget派生类的实例,作为标签页的内容。 3. 通过调用QTabWidget的addTab()函数将QWidget实例添加到QTabWidget中,并指定相应的标签文字。 4. 设置QTabWidget的显示模式(TabPosition),例如设置为上方、左侧、右侧或下方显示标签页。 5. 可选:设置标签页的样式、字体、图标等属性。 6. 通过信号与槽连接的方式,处理标签页切换时需要执行的操作。 TabPage的特点: 1. 提供了一种方便的界面组织方式,使得界面清晰、易于操作。 2. 可以动态地添加、删除标签页,适应不同的需求变。 3. 支持多种显示模式和样式的设置,可以根据需求自定义标签页的外观。 4. 可以和其他布局组件(如水平布局、垂直布局)结合使用,实现更灵活的界面布局。 总之,Qt的TabPage是一种非常实用的布局组件,可以帮助我们方便地切换和管理多个标签页,提升用户界面的易用性和美观性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值