У меня есть MainWindow, а затем класс SecondWindow, который открывается при нажатии кнопки в MainWindow. В этом классе SecondWider есть ползунок, который я хочу управлять музыкой c в классах MainWindow и SecondWindow.
моя основная функция:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
SecondWindow s;
//this connects MainWindow to SecondWindow to open
QObject::connect(...);
//plays background music
Music m;
QObject::connect(&s, SIGNAL(Volume(int)), &m, SLOT(setVol(int)));
return a.exec();
}
У меня музыка c объект, который воспроизводит функцию, определенную так:
class Music
{
public:
Music();
public slots:
void setVol(int value);
private:
QMediaPlayer* music;
};
мое SecondWindow определено так:
class SecondWindow: public QMainWindow
{
Q_OBJECT
public:
explicit SecondWindo(QWidget *parent = nullptr);
~SecondWindow();
signals:
void VolumeChange(int value);
void Volume(int value);
public slots:
void ShowSettingsWindow();
void changeVolume(int value);
private:
void Connections();
int volume; //holds the volume value based on the music_slider
QSlider* music_slider;
};
В нижней части конструктора моего SecondWindow по умолчанию у меня есть следующий оператор connect: с определением SLOT:
QObject::connect(music_slider, SIGNAL(valueChanged(int)), this, SLOT(VolumeChange(int)));
void SecondWindow::VolumeChange(int value){
emit Volume(value);
}
, затем musi c определил слот следующим образом:
void Music::setVol(int value){
music->setVolume(value);
}
В настоящее время я пытаюсь сделать так, чтобы каждый раз, когда ползунок изменял значение, VolumeChange вызывается для значения, которое в данный момент имеет ползунок. Затем вызывается сигнал Volume, в результате чего musi c вызывает функцию setVol и устанавливает громкость. Но я получаю сообщение об ошибке во втором операторе подключения в основном, говоря, что он не может преобразовать все типы аргументов. Как я могу исправить эти операторы подключения для работы или есть лучший способ сделать это?