diff --git a/mainwindow.cpp b/mainwindow.cpp index 7a8c8df..8fe28d1 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -2,9 +2,10 @@ #include "ui_mainwindow.h" #include -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); // 设置音量滑块位置 } diff --git a/mainwindow.h b/mainwindow.h index 0031112..554c811 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -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();