[英]Referring to a predefined 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”的同一個audioi文件,此刻我想到的只是這個,而且我不確定我是否做得正確:
void MainWindow::pauseAudioFile(){
player->pause();
}
這兩個功能(如果就是這樣的話)都是從按鈕按下開始的,我知道這對第一個功能有效。
您嘗試在此處訪問不可訪問的對象:
void MainWindow::pauseAudioFile(){
player->pause();
}
如果它甚至為您編譯,我感到很驚訝。 解決方案是更改此:
QMediaPlayer *player = new QMediaPlayer(this);
至
player = new QMediaPlayer(this);
其中“玩家”對象是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;
}
話雖如此,在這種情況下,您可能根本不需要堆對象,並且可以開始使用沒有動態內存分配的堆棧對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.