首页 > 解决方案 > 在 X 位置停止从 QMediaPlayer 播放视频

问题描述

我是 Qt 的新手,我在我的一个 GUI 项目中使用 QMediaPlayer,我想在某个位置 X 停止加载的视频(用户在 Line Edit 上的输入)我怎么能做到这一点?我知道我可以通过执行 player->setPosition(Y) 来设置起始位置,其中 Y 是一个整数,但是结束位置呢?

标签: c++qt

解决方案


一个较小的选择是使用position()which 返回当前位置作为qint64- 如果您play()为您调用该方法,QMediaPlayer则使用类似

  while (player.position() < input) {}
  player.stop();     // Or player.pause();

它将等到到达该input位置。但这种方法的缺点是阻塞while循环,在不知道预期应用程序的情况下,我不知道这是否合适。使用QMediaPlayer::positionChanged信号(基于QMediaPlayer's发出)可能会更好notifyInterval,例如

  connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(checkPosition());

假设this是接收者和两者player,并且input被限定为可用于插槽checkPosition()checkPosition()然后看起来像

  checkPosition() {
      if (player.position() > input()) {
          player.stop();     // Or player.pause();
      }
  }

当然,您也可以将playerand传递inputcheckPosition()插槽,但为了简单起见,我忽略了这一点。希望这可以帮助。


推荐阅读