关于Qt音乐播放器进度条拖拽无用的问题解决方案

在使用Qt编写音乐播放器的时候,进度条关联播放音乐基本是必须的。那么在设计的过程中你可能会碰到一个奇怪的问题就是拖拽进度条的时候,可能会报错如下:

然后音乐就卡着不动了。。。

cpp 复制代码
connect(ui->volume_toolButton,&VolumeToolBtn::volumeChange,this,
       [this](const int value) {
            // 将值转换为0.0到1.0之间
            const float volume = static_cast<float>(value) / 100;
            this->m_audioOutput->setVolume(volume); // 设置音量
});

connect(this->m_player.get(), &QMediaPlayer::positionChanged,this, &KuGouApp::updatePositionLab);

connect(this->m_player.get(), &QMediaPlayer::durationChanged, this, &KuGouApp::updateSliderRange);

connect(ui->progressSlider,&QSlider::sliderReleased,
this,&KuGouApp::updateSliderPosition);
******************************


void KuGouApp::updatePositionLab(int position) {
    if(ui->progressSlider->isSliderDown())return;
    ui->position_label->setText(QTime::fromMSecsSinceStartOfDay(position).toString("mm:ss"));
}

void KuGouApp::updateSliderRange(int duration) {
    ui->progressSlider->setMaximum(duration);//一旦加上这一行就无法拖动进度条
    ui->duration_label->setText(QTime::fromMSecsSinceStartOfDay(duration).toString("mm:ss"));
}

void KuGouApp::updateSliderPosition() {
    //播放列表为空时,设置无法拖动,留待之后解决
    this->m_player->setPosition(this->m_player->duration()*ui->progressSlider->value()/100);
    this->m_player->play();
}

是不是想不明白为什么自己明明已经设置了在sliderReleased的时候让播放器setPosition。但却没有反应。。。

那是因为你的总时长被你修改了,但是在setPosition的时候

你还是用了固定的100。。。改成ui-> progressSlider->duration();即可

相关推荐
2zcode2 分钟前
免费开源项目文档:基于MATLAB同态滤波的医学图像增强系统设计与实现
开发语言·matlab
REDcker6 分钟前
Android 15 16KB 内存页适配详解
android·开发语言·python
2zcode6 分钟前
基于MATLAB同态滤波的医学图像增强系统设计与实现
开发语言·计算机视觉·matlab
脏脏a7 分钟前
飞牛NAS部署EasyNVR实操:摄像头RTSP接入、本地录像与公网回看
开发语言·php
杰佛史彦明120 分钟前
PDF 表格转 CSV:Python 实现方法与代码解析
开发语言·python·pdf
gugucoding26 分钟前
39. 【C语言】经典 C 项目实战:迷你 HTTP 服务器
c语言·开发语言·http
什巳34 分钟前
JAVA练习277- 找到字符串中所有字母异位
java·开发语言·算法·leetcode
头茬韭菜1 小时前
3.6 依赖注入 — 四个依赖的精准边界
开发语言·ai·ecmascript
江华森1 小时前
Python神经网络编程(四):Python从零搭建神经网络
开发语言·python·神经网络
Helen_cai2 小时前
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构)
开发语言·华为·php·harmonyos