嗨我今年仍然在为学校的主要项目学习C ++和QT,我想要一些C ++语法和使用某些QT函数的帮助。当我正在制作媒体经理时,我已经设法通过按下表单中的按钮来播放歌曲。现在我想按下另一个按钮暂停同一首歌,但我不完全确定该怎么做,你能帮忙吗?
我已经有了这首歌:
void MainWindow::playAudioFile(){
QMediaPlayer *player = new QMediaPlayer(this);
player->setMedia(QUrl::fromLocalFile("LOCATION OF SONG FILE"));
player->setVolume(50);
player->play();
}
但我想知道如何暂停来自QMediaPlayer的名为'播放器'的同一个音频文件,目前我所想到的就是这个,我不确定我是否正确地做到了:
void MainWindow::pauseAudioFile(){
player->pause();
}
这两个功能(如果这就是它们被称为)都以按下按钮开始,我知道它适用于第一个按钮。
答案 0 :(得分:1)
您正在尝试访问不可访问的对象:
void MainWindow::pauseAudioFile(){
player->pause();
}
如果它甚至为你编译,我感到很惊讶。解决方案是改变这个:
QMediaPlayer *player = new QMediaPlayer(this);
到
player = new QMediaPlayer(this);
其中“player”对象是MainWindow类的成员,所以基本上你会把它放到你的MainWindow类中:
#include <QMainWindow>
#include <QMediaPlayer>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QObject *parent = 0)
: QObject(parent)
, player(new MediaPlayer(this))
...
public slots:
void playAudioFile() {
player->setMedia(QUrl::fromLocalFile("LOCATION OF SONG FILE"));
player->setVolume(50);
player->play();
}
void pauseAudioFile(){
player->pause();
}
private:
QMediaPlayer *player;
}
话虽这么说,在这种情况下你根本不需要堆对象,你可以开始使用没有动态内存分配的堆栈对象。