Привет, я все еще изучаю 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();
}
Обе эти функции (если так они называются) начинаются с нажатия кнопки, которое, как я знаю, работает для первой.
Вы пытаетесь получить доступ к недоступному объекту здесь:
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;
}
При этом вам может вообще не понадобиться объект кучи в этом случае, и вы можете начать использовать объект стека без динамического выделения памяти.