Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Qt中制作工作音量滑块?_C++_Qt_Media Player - Fatal编程技术网

C++ 如何在Qt中制作工作音量滑块?

C++ 如何在Qt中制作工作音量滑块?,c++,qt,media-player,C++,Qt,Media Player,我正在尝试制作一个音量滑块来改变QT中播放器的音量,但我无法让它工作 这是我的音乐播放器的照片。当前,在播放音乐时滑动音量滑块时,音量不会更改/更新为滑块的值 以下是我用于volumeslider的代码片段: volumeSlider = new QSlider(Qt::Horizontal, this); volumeSlider->setRange(0, 100); volumeSlider->setFixedWidth(100); volumeSlider->setVa

我正在尝试制作一个音量滑块来改变QT中播放器的音量,但我无法让它工作

这是我的音乐播放器的照片。当前,在播放音乐时滑动音量滑块时,音量不会更改/更新为滑块的值

以下是我用于volumeslider的代码片段:

volumeSlider = new QSlider(Qt::Horizontal, this);
volumeSlider->setRange(0, 100);
volumeSlider->setFixedWidth(100);
volumeSlider->setValue(100);
player = new QMediaPlayer;


我很笨,这就像改变一样简单:

connect(volumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
connect(volumeSlider, SIGNAL(volumeChanged(int)), player, SLOT(setVolume(int)));

谢谢Tay2510:
“为什么不把valueChanged(int)连接到setVolume(int)?–Tay2510”

呃……我是说只有一行

connect(volumeSlider, SIGNAL(valueChanged(int)),player, SLOT(setVolume(int)));
这就是你所需要的一切,让它工作


您的原始代码:

connect(volumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
connect(volumeSlider, SIGNAL(volumeChanged(int)), player, SLOT(setVolume(int)));  
      //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error here
是错误的,因为
QSlider
中没有
volumeChanged(int)
信号,并且在编译代码时,应该会收到一些关于Qt Creator连接失败的通知(显示在Qt Creator的控制台中)

我猜
volumeChanged(int)
是在主小部件中定义的自定义信号,如果您将原始代码更改为

connect(volumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
connect(this, SIGNAL(volumeChanged(int)), player, SLOT(setVolume(int)));
     // ^^^^
它应该可以工作,因为你先把A连接到B,然后再把B连接到C,但它太冗长了。因此我问你为什么不把A连接到C

关于你上次的修改:

connect(volumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int))); // Does nothing
connect(volumeSlider, SIGNAL(valueChanged(int)), player, SLOT(setVolume(int)));

这就像连接A到B,连接A到C,但只有A到C的连接起作用(如上所述)。第一次连接是不必要的(因为B是一个
信号

为什么不直接将
valueChanged(int)
连接到
setVolume(int)
?哇!成功了!真不敢相信。我花了几个小时想弄明白,事情就这么简单。。。非常感谢你!
connect(volumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
connect(volumeSlider, SIGNAL(volumeChanged(int)), player, SLOT(setVolume(int)));  
      //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error here
connect(volumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
connect(this, SIGNAL(volumeChanged(int)), player, SLOT(setVolume(int)));
     // ^^^^
connect(volumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int))); // Does nothing
connect(volumeSlider, SIGNAL(valueChanged(int)), player, SLOT(setVolume(int)));