使用窗口中的QSlider更改背景音量
Using QSlider in window to change background volume
我有一个MainWindow,然后有一个SecondWindow类,当在MainWindow中单击按钮时会打开。这个SecondWindow类中有一个滑块,我想控制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();
}
我有一个音乐对象,它可以播放这样定义的功能:
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默认构造函数的底部,我有以下连接语句,带有SLOT定义:
QObject::connect(music_slider, SIGNAL(valueChanged(int)), this, SLOT(VolumeChange(int)));
void SecondWindow::VolumeChange(int value){
emit Volume(value);
}
那么音乐的SLOT定义如下:
void Music::setVol(int value){
music->setVolume(value);
}
我目前正在尝试使其在每次滑块更改值时,都会为滑块当前的值调用VolumeChange。然后,调用信号Volume,使音乐调用函数setVol,从而设置音量。但我在main中的第二个connect语句中收到一个错误,说它无法转换所有参数类型。我如何修复这些连接语句,或者有更好的方法吗?
根据您的代码,第二个窗口中的连接QObject::connect(music_slider, SIGNAL(valueChanged(int)), this, SLOT(VolumeChange(int)));
无效,因为它没有名为VolumeChange
的SLOT
。事实上,它是一个SIGNAL
。然而,它有一个叫changeVolume
的SLOT
,我想你的意思是。
相关文章:
- 如何在全屏模式下(在OpenGL中)使背景透明
- 使用窗口中的QSlider更改背景音量
- SDL2 透明背景
- 在 Visual C++ 中以编程方式更改按钮的背景图像
- 多重采样背景不显示
- 直接2D用WM_ERASEBKGND擦除背景?
- 在特定时间内更改 QLabel 的背景颜色
- 如何设置与其背景图像大小相对应的窗口大小?
- 更改包含 QButton 的 Qlayout 的背景颜色
- 如何为使用创建窗口创建的窗口创建自定义背景颜色
- 删除K的背景掩码-意味着Python或C++中的集群/
- SystemParametersInfo将背景设置为纯色,而不是实际设置图片
- 背景任务UWP C++只触发一次
- 我正在尝试更改背景的颜色,但它不起作用
- 在 C 中获取背景外壳命令的 PID
- 如何在QT中为QInputDialog输入密码时设置背景非活动和灰色?
- MFC 更改 CListCtrl 背景颜色
- 如何仅设置 QTabWidget 背景颜色样式表
- Qt为所有对话框设置通用背景
- 什么是"MFC Dialog Extension"?(Windows/C++ 新手 - Linux 背景)