Ссылаясь на предопределенный QMediaPlayer

Привет, я все еще изучаю 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 под названием «player», и на данный момент все, о чем я думал, это следующее, и я не уверен, правильно ли я это делаю:

void MainWindow::pauseAudioFile(){
player->pause();
}

Обе эти функции (если так они называются) начинаются с нажатия кнопки, которое, как я знаю, работает для первой.

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;
}

При этом вам может вообще не понадобиться объект кучи в этом случае, и вы можете начать использовать объект стека без динамического выделения памяти.

1

Другие решения


По вопросам рекламы [email protected]