视频播放器的问题

<template>
  <div class="app-container">
    <el-form :model="queryParam" ref="queryForm" :inline="true">
      <el-form-item label="题目ID:">
        <el-input v-model="queryParam.id" clearable></el-input>
      </el-form-item>
      <el-form-item label="题目内容:">
        <el-input v-model="queryParam.content" clearable></el-input>
      </el-form-item>

      <el-form-item label="年级:">
        <el-select v-model="queryParam.level" placeholder="年级" @change="levelChange" clearable>
          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="学科:">
        <el-select v-model="queryParam.subjectId" clearable>
          <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id"
            :label="item.name + ' ( ' + item.levelName + ' )'"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="题型:">
        <el-select v-model="queryParam.questionType" clearable>
          <el-option v-for="item in questionType" :key="item.key" :value="item.key" :label="item.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button plain type="primary" @click="submitForm">查询</el-button>
        <el-popover placement="bottom" trigger="click">
          <el-button plain type="warning" size="mini" v-for="item in editUrlEnum" :key="item.key"
            @click="$router.push({ path: item.value })">{{ item.name }}
          </el-button>
          <el-button plain slot="reference" type="primary" class="link-left">添加</el-button>
        </el-popover>
      </el-form-item>
    </el-form>
    <div class="content">
      <muiVideo :src="mySrc" :title="myTitle" :poster="myPoster" @mpVideo="mpVideo">
        <div class="topicModel" v-if="showTopic">
          <div class="topicModel-content">
            <span @click="clickMe">我是视频中的弹窗,点击我触发事件</span>
          </div>
        </div>
      </muiVideo>
    </div>
    <el-table :header-cell-style="{ background: '#eef1f6', color: '#606266' }" v-loading="listLoading" :data="tableData"
      border fit highlight-current-row style="width: 100%">
      <el-table-column prop="id" label="Id" width="90px" />
      <el-table-column prop="subjectId" label="学科" :formatter="subjectFormatter" width="220px" />
      <el-table-column prop="questionType" label="题型" :formatter="questionTypeFormatter" width="70px" />
      <el-table-column prop="shortTitle" label="题干" show-overflow-tooltip />
      <el-table-column prop="score" label="分数" width="60px" />
      <el-table-column prop="difficult" label="难度" width="60px" />
      <el-table-column prop="createTime" label="创建时间" width="160px" />
      <el-table-column label="操作" align="center" width="220px">
        <template slot-scope="{row}">
          <el-button plain size="mini" @click="showQuestion(row)">预览</el-button>
          <el-button plain size="mini" @click="editQuestion(row)">编辑</el-button>
          <el-button plain size="mini" type="danger" @click="deleteQuestion(row)" class="link-left">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
      @pagination="search" />
    <el-dialog :visible.sync="questionShow.dialog" style="width: 100%;height: 100%">
      <QuestionShow :qType="questionShow.qType" :question="questionShow.question" :qLoading="questionShow.loading" />
    </el-dialog>
  </div>
</template>

<script>
import { mapGetters, mapState, mapActions } from 'vuex'
import Pagination from '@/components/Pagination'
import QuestionShow from './components/Show'
import questionApi from '@/api/question'
import muiVideo from '@/components/muiVideo'

export default {
  components: { Pagination, QuestionShow, muiVideo },
  data() {
    return {
      queryParam: {
        id: null,
        questionType: null,
        level: null,
        subjectId: null,
        pageIndex: 1,
        pageSize: 10
      },
      subjectFilter: null,
      listLoading: true,
      tableData: [],
      total: 0,
      questionShow: {
        qType: 0,
        dialog: false,
        question: null,
        loading: false
      },
      mySrc: "./demo.mp4", 	   	  //播放路径
      myTitle: '测试', 	  //视频左上角标题
      myPoster: '', 	  //视频封面
      showTopic: false  //默认不展示弹题模态窗
    }
  },
  created() {
    this.initSubject()
    this.search()
    let _this = this;
    setTimeout(function () {      //模拟3秒后弹出模态窗,实际开发中应该是随机时间弹出
      _this.showTopic = true;	 //展示答题模态窗
      setTimeout(function () { 	 //弹出模态窗后做一个延迟效果,暂停播放
        _video.pause();
      }, 500)
    }, 3000)
  },
  methods: {
    clickMe() {
      console.log("点到我了");
      this.showTopic = false; //关闭答题模态窗
    },
    mpVideo(video) {
      _video = video; 	     //吐出Video原生媒体实例,其他特殊功能可以使用Video来添加原生事件,例如禁用滚动条、禁用快进快退功能等等
    },
    submitForm() {
      this.queryParam.pageIndex = 1
      this.search()
    },
    search() {
      this.listLoading = true
      questionApi.pageList(this.queryParam).then(data => {
        const re = data.response
        this.tableData = re.list
        this.total = re.total
        this.queryParam.pageIndex = re.pageNum
        this.listLoading = false
      })
    },
    levelChange() {
      this.queryParam.subjectId = null
      this.subjectFilter = this.subjects.filter(data => data.level === this.queryParam.level)
    },
    addQuestion() {
      this.$router.push('/exam/question/edit/singleChoice')
    },
    showQuestion(row) {
      let _this = this
      this.questionShow.dialog = true
      this.questionShow.loading = true
      questionApi.select(row.id).then(re => {
        _this.questionShow.qType = re.response.questionType
        _this.questionShow.question = re.response
        _this.questionShow.loading = false
      })
    },
    editQuestion(row) {
      let url = this.enumFormat(this.editUrlEnum, row.questionType)
      this.$router.push({ path: url, query: { id: row.id } })
    },
    deleteQuestion(row) {
      let _this = this
      questionApi.deleteQuestion(row.id).then(re => {
        if (re.code === 1) {
          _this.search()
          _this.$message.success(re.message)
        } else {
          _this.$message.error(re.message)
        }
      })
    },
    questionTypeFormatter(row, column, cellValue, index) {
      return this.enumFormat(this.questionType, cellValue)
    },
    subjectFormatter(row, column, cellValue, index) {
      return this.subjectEnumFormat(cellValue)
    },
    ...mapActions('exam', { initSubject: 'initSubject' })
  },
  computed: {
    ...mapGetters('enumItem', ['enumFormat']),
    ...mapState('enumItem', {
      questionType: state => state.exam.question.typeEnum,
      editUrlEnum: state => state.exam.question.editUrlEnum,
      levelEnum: state => state.user.levelEnum
    }),
    ...mapGetters('exam', ['subjectEnumFormat']),
    ...mapState('exam', { subjects: state => state.subjects })
  }
}
</script>
<style lang="scss">
.content {
  width: 500px;
  height: 300px;
  margin: 300px auto;
}

@keyframes fadeIn {
  0% {
    opacity: 0;
    transform: scale(1.2);
  }

  100% {
    opacity: 1;
    transform: scale(1);
  }
}

.topicModel {
  padding: 0 10px;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 9999;
  background-color: rgba(0, 0, 0, 0.3);
  display: flex;
  justify-content: center;
  align-items: center;
  animation: fadeIn 0.4s;

  &-content {
    width: 60%;
    height: 60%;
    background-color: #FFFFFF;

  }
}
</style>

在这里插入图片描述

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt 是一个跨平台的应用程序开发框架,能够帮助开发者快速地创建各种类型的应用程序。其中,Qt 视频播放器是 Qt 框架中的一个重要功能,用于播放各种视频格式的文件。 CSDN 是一个面向程序员的技术社区,提供了丰富的技术资源和交流平台。在 CSDN 上,我们可以找到很多关于 Qt 视频播放器的教程和资料。 Qt 视频播放器通过 Qt 多媒体模块实现视频播放的功能。开发者可以利用 Qt 的多媒体类库,如 QMediaPlayer 和 QVideoWidget,实现视频的播放、暂停、停止、快进、快退等功能。同时,Qt 还提供了对常见视频格式的支持,如 MP4、AVI 等,使开发者可以方便地处理不同格式的视频文件。 在 CSDN 上,我们可以找到很多关于 Qt 视频播放器的教程和示例代码。这些教程和示例代码可以帮助开发者了解 Qt 视频播放器的基本使用方法,学习如何自定义视频播放器的外观和功能,以及如何处理视频播放过程中的各种事件。 通过在 CSDN 上学习和交流,我们可以更好地掌握 Qt 视频播放器的开发技术,解决遇到的问题,提高开发效率。同时,CSDN 社区也提供了一个交流平台,我们可以在其中与其他开发者分享经验、交流技术,共同推动 Qt 视频播放器的发展。 综上所述,Qt 视频播放器是通过 Qt 框架实现的功能,用于播放各种视频格式的文件。而 CSDN 则为开发者提供了学习、交流和分享的平台,可以帮助我们更好地学习和使用 Qt 视频播放器。 ### 回答2: QT视频播放器CSDN是一个基于QT开发的视频播放器,可以用来播放各种视频文件格式。CSDN是一个开发者社区,提供了各种技术文章和资源,而QT是一款跨平台的GUI开发框架。结合使用这两个工具,可以开发出功能强大的视频播放器。 QT视频播放器CSDN具有多种功能,包括播放、暂停、快进、快退、调整音量等等。用户可以通过QT提供的UI界面进行操作,也可以通过设置快捷键来进行控制。播放器还支持播放列表功能,可以一次性导入多个视频文件进行连续播放。 开发者可以借助CSDN网站上的各种技术文章和资源,学习和掌握QT开发视频播放器的知识和技巧。CSDN上有很多关于QT的教程和案例,可以帮助开发者了解QT的基本使用方法,并实现各种高级功能。同时,CSDN还提供了丰富的开源项目,开发者可以参考这些项目的源代码,加快开发进程。 在使用过程中,有可能会遇到一些问题。此时,可以在CSDN上提问,寻求其他开发者的帮助和建议。CSDN拥有一个庞大的开发者社区,很多问题都能得到及时解答。通过与其他开发者的交流和分享,可以进一步提升自己的开发水平。 总之,QT视频播放器CSDN是一个非常有用的工具,在开发视频播放器时可以充分利用其中的资源和技术支持,帮助开发者更加高效地完成项目。 ### 回答3: Qt视频播放器是一款基于Qt框架开发的多媒体播放器,它提供了丰富的功能和友好的界面,使得用户可以便捷地播放各种格式的视频文件。 Qt作为一个跨平台的开发框架,可以在各种操作系统上运行,因此Qt视频播放器具备了较好的兼容性。它支持在Windows、macOS和Linux等操作系统上进行编译和部署,让用户能够在不同平台上享受到同样稳定可靠的视频播放体验。 Qt视频播放器拥有清晰的界面和丰富的功能,可以实现基本的视频播放功能,如播放、暂停、快进、快退和音量调节等。此外,它还支持播放列表功能,用户可以将多个视频文件添加到播放列表中,方便地切换不同的视频文件进行观看。 Qt视频播放器也支持对视频的截图操作,用户可以通过简单的操作将正在播放的视频截取下来保存为图片格式。这对于用户来说非常方便,可以用于制作视频封面、保存有趣的场景或做其他用途。 除了基本的视频播放功能外,Qt视频播放器还支持视频格式的转换和编解码功能。用户可以使用该播放器将一个视频文件转换为另一种视频格式,并可以对视频进行编解码的设置,以获得更好的播放效果。 综上所述,Qt视频播放器是一款功能丰富、界面友好并具有较好兼容性的视频播放器。无论是在个人使用还是在开发商用途上,它都能提供稳定、流畅的视频播放体验,深受用户的喜爱。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值