C++ 如何在Qt中制作工作音量滑块?
我正在尝试制作一个音量滑块来改变QT中播放器的音量,但我无法让它工作 这是我的音乐播放器的照片。当前,在播放音乐时滑动音量滑块时,音量不会更改/更新为滑块的值 以下是我用于volumeslider的代码片段: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
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)));