簡體   English   中英

QMediaPlayer::position() 返回零

[英]QMediaPlayer::position() return zero

我試圖讓當前媒體的 position 像這樣:

player->setNotifyInterval(500);

connect(Player::player, &QMediaPlayer::positionChanged, this, &Player::ChangedPosition);

void Player::ChangedPosition(qint64 position)
{
    Player::currentPosition = position; //qint64 variable
    //currentPosition still 0

    qDebug() << "current position: " << currentPosition;

    return;
}

我試圖這樣做(因為 Qt 的文檔沒有說明這個插槽QMediaPlayer::setPosition

connect(Player::player, &QMediaPlayer::positionChanged, this, &QMediaPlayer::setPosition);

我有兩個 class ( PlaylistPlayer ):

playlistmanager管理器 - 播放列表 class 的Playlist

playermanager - Player class 的 object

設置播放列表並播放:

//set current media
playlistmanager->GetCurrentPlayList()->setCurrentIndex(newIndex);
//play this media
playermanager->play();
//set current position
playermanager->SetPositionOfTrack(playermanager->GetPositionOfTrack());

在此代碼媒體播放后,但從頭開始

這里Player class的兩種方法:

qint64 Player::GetPositionOfTrack()
{
    return currentPosition; //qint64 variable in class
}

void Player::SetPositionOfTrack(const qint64 position)
{
    player->setPosition(position);

    return;
}

那么,如何獲得當前媒體當前 position

如果我像這樣創建 object 需要使用this指針: player = new QMediaPlayer(this); . 錯誤的例子:

connect(Player::player, &QMediaPlayer::positionChanged, this, &QMediaPlayer::setPosition);

正確的 class 的構造函數:

    Player::Player()
    {
        try
        {
            player = new QMediaPlayer(this);
        }
        catch(std::bad_alloc &exp)
        {
            #ifndef Q_DEBUG
            qCritical() << "Exception caught: " << exp.std::bad_alloc::what();
            #endif
            abort();
        }
        catch(...)
        {
            #ifndef Q_DEBUG
            qCritical() << "Some exception caught";
            #endif
            abort();
        }
    
        player->setNotifyInterval(500);
        
        connect(this, &QMediaPlayer::positionChanged, this, &Player::ChangedPosition);
    
        return;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM