I was developing a Qt application that makes use of a Phonon::VolumeSlider object. But after clicking the mute button beside of the VolumeSlider and verifying its tooltip, I noticed it was showing the wrong volume. A video can explain this better than me:
httpv://www.youtube.com/watch?v=rJcqZ2SVTK0
If you want to reproduce this problem, you can download its source code as a Qt Creator project. Please keep in mind that it’s the source code with errors! But there’s a workaround to this problem:
1. In the class where you create the Phonon::AudioOutput whose volume is handled by the VolumeSlider, put this:
[code language=”cpp”]
connect(audioOutput, SIGNAL(mutedChanged(bool)), this, SLOT(handleMute(bool)));
connect(audioOutput, SIGNAL(volumeChanged(qreal)), this, SLOT(handleVolume(qreal)));
[/code]
2. Create the slots you used above using the following code:
[code language=”cpp”]
void MainWindow::handleMute(bool mute) {
if (!mute) {
audioOutput->setVolume(outputVolume);
}
}
void MainWindow::handleVolume(qreal volume) {
outputVolume = volume;
}
[/code]
3. Declare the slots and the outputVolume variable in your header file:
[code language=”cpp”]
private:
qreal outputVolume;
private slots:
void handleMute(bool mute);
void handleVolume(qreal volume);
[/code]
You can download the fixed source code. I don’t know if this behaviour is the expected in Qt, but I filed a bug for it.