设置音量显示滑块

This commit is contained in:
flykhan 2023-08-31 16:47:24 +08:00
parent effdecb2e7
commit 749120f14a
2 changed files with 29 additions and 9 deletions

View File

@ -2,9 +2,10 @@
#include "ui_mainwindow.h"
#include <pthread.h>
int mplayer_pid;
pthread_t t1,t2; //
char current_song_path_name[128] = "";
int mplayer_pid; // 子进程号
pthread_t t1,t2; // 线程
char current_song_path_name[128] = ""; // 当前歌曲路径
int currentVolume = 50; // 当前音量
void *getTimerThreadFunc(void *arg); // 发送获取当前时间的 mplayer 命令
void *readPipeMSG(void *arg); // 获取当前时间的线程
@ -31,8 +32,10 @@ MainWindow::MainWindow(QWidget *parent)
// 捕获当前时间信号
connect(this, SIGNAL(currentTimeSignal(int)), this, SLOT(setCurrentTimeLabel(int)));
// 建立滑块修改信号通讯
// 建立歌曲进度滑块修改信号通讯
connect(this, SIGNAL(currentProgressSignal(int)), this, SLOT(setCurrentSlider(int)));
// 建立音量大小滑块信号通讯
// connect(this, SIGNAL(currentVolumeSignal(int)), this, SLOT(setVolumeSlider(int)));
}
MainWindow::~MainWindow()
@ -109,6 +112,9 @@ void MainWindow::mplayerInit()
pthread_create(&t1,NULL,getTimerThreadFunc,this);
pthread_create(&t2,NULL,readPipeMSG,this);
volume_control(currentVolume, 1); // 初始音量设置为 currentVolume->50
setVolumeSlider(currentVolume); // 设置音量滑块初始位置
// pthread_detach(t1);
// pthread_detach(t2);
@ -202,6 +208,12 @@ void MainWindow::setCurrentSlider(int currentProgress)
ui->time_slider->setValue(currentProgress);
}
void MainWindow::setVolumeSlider(int currentVolume)
{
// 设置音量滑动条状态
ui->volume_slider->setValue(currentVolume);
}
void *getTimerThreadFunc(void *arg)
{
MainWindow *p = (MainWindow *)arg;
@ -320,10 +332,11 @@ void MainWindow::player_rewind_or_forward(int seconds)
write(this->fifo_fd, changeSongBuf, len); // 将快进快退指令写入到有名管道中
}
void MainWindow::volume_control(int value)
void MainWindow::volume_control(int value, int abs)
{
char changeSongBuf[128] = "";
int len = sprintf(changeSongBuf, "volume %d\n", value); // 音量调整到 value 大小
// 音量调整到 value 大小(-数减+数加) abs 为 0 时在当前音量上加减一个值abs 不为 0 时将当前音量设置为 value 大小
int len = sprintf(changeSongBuf, "volume %d %d\n", value, abs);
write(this->fifo_fd, changeSongBuf, len); // 将音量控制指令写入到有名管道中
}
@ -362,10 +375,15 @@ void MainWindow::on_mute_btn_clicked()
void MainWindow::on_volume_down_btn_clicked()
{
volume_control(-10); // 减 10 音量
volume_control(-10, 0); // 减 10 音量
currentVolume -= 10;
setVolumeSlider(currentVolume); // 设置音量滑块位置
}
void MainWindow::on_volume_up_btn_clicked()
{
volume_control(10); // 加 10 音量
volume_control(10, 0); // 加 10 音量
currentVolume += 10;
// emit this->currentVolumeSignal(currentVolume);
setVolumeSlider(currentVolume); // 设置音量滑块位置
}

View File

@ -49,14 +49,16 @@ public slots:
void playNextSong(); // 切换歌曲槽函数I
void playLastSong();
void player_rewind_or_forward(int seconds); // 快进快退函数
void volume_control(int value); // 音量设置函数
void volume_control(int value, int abs); // 音量设置函数
void volume_mute_switch(int mute_arg); // 静音切换函数
void setCurrentTimeLabel(int time); // 设置当前时间标签槽函数
void setCurrentSlider(int currentProgress); // 设置当前进度条
void setVolumeSlider(int currentVolume); // 设置当前音量条
signals:
void currentTimeSignal(int time); // 当前时间信号
void currentProgressSignal(int currentProgress); // 当前进度信号
void currentVolumeSignal(int currentVolume); // 当前音量信号
private slots:
void on_play_btn_clicked();