c++ - 在 X 位置停止从 QMediaPlayer 播放视频
问题描述
我是 Qt 的新手,我在我的一个 GUI 项目中使用 QMediaPlayer,我想在某个位置 X 停止加载的视频(用户在 Line Edit 上的输入)我怎么能做到这一点?我知道我可以通过执行 player->setPosition(Y) 来设置起始位置,其中 Y 是一个整数,但是结束位置呢?
解决方案
一个较小的选择是使用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();
}
}
当然,您也可以将player
and传递input
给checkPosition()
插槽,但为了简单起见,我忽略了这一点。希望这可以帮助。
推荐阅读
- mesos - 如何在 minidcos CLI 中安装 kubernetes 包
- jquery - jquery 验证插件无法显示关于 maxlength 的“textarea”的验证消息
- java - 编程音乐播放器 AB 重复
- elisp - 如何将列表中的成员作为字符串传递给另一个函数?
- ios - 如何使用包含从 Linux 到 iOS 设备的 `XCTest` 单元测试的`Test` 构建运行在 MacOSX 上构建的 iOS 应用程序
- android - Androidx:WorkManager 的 enqueue 方法没有运行 Worker
- python - 在python中的字符串中的任何元音之前或之后立即删除“y”
- excel - excel vba Catch 22 与运行时错误 49 错误的 DLL 调用约定
- python - Celery:使工作进程和子进程(或线程)共享 GPU 分配的数据
- java - 检测 POJO 变化的侵入性最小的方法是什么?