【发布时间】:2014-01-29 16:49:09
【问题描述】:
我想在 QML 中淡入视频声音的同时淡出音频文件的音量。
动画应该没问题,但我在这里碰壁了。
似乎volume 属性以某种方式在 QML 中所有媒体元素的所有实例之间共享。例如看下面的代码:
Rectangle
{
id:mainScreen
focus: true
Video
{
id:video
anchors.fill: parent
source: "path/to/file.mp4";
volume:1
onVolumeChanged: console.warn("video: "+volume)
autoPlay: true
}
Audio
{
source: "path/to/file.mp3";
id:audio
volume:1
onVolumeChanged: console.warn("audio: "+volume)
autoPlay: true
}
Keys.onPressed:
{
audio.volume = Math.random(1);
}
}
当我按下一个键时,video 和 audio 的 onVolumeChanged-Handlers 都会被调用。
有没有办法独立控制元素的音量?
或者我应该提交 Qt 错误报告吗?这是 Qt 5.2.0 的 OpenGL MSVC2010 版本,以防万一。
【问题讨论】:
-
您可以尝试在您的
Keys.onPressed处理程序中执行event.accepted = true;吗?我的猜测是这个事件再次被抛出到另一个小部件。请参阅qt-project.org/doc/qt-5.0/qtquick/… 和qt-project.org/doc/qt-5.0/qtquick/… 了解更多信息 -
谢谢,但这无济于事。两个处理程序仍然被调用......另外,这只是一个演示我的问题的最小示例,在实际代码中,音量变化不是由鼠标输入触发的,而是由其他一些事件触发的。
-
不知道。顺便说一句,您可以尝试联系 IRC 中的一些 QtQuick 开发人员。这绝对可能是一个错误。