我使用 MediaPlayer 元素開發了一個基于 QML 的視頻播放器程式。該程式具有視頻播放器的大部分基本功能(播放、暫停、音量上/下、前進、后退等)。我的下一個任務是為視頻添加字幕,我需要使用 MediaPlayer 元素的 metaObject 方法,但 QML 方面確實允許這種功能性,它說:
Note: This property is not accessible from QML.
檔案相關的 metaObject 中有一段描述讓我很困惑:
mediaObject : variant
This property holds the native media object.
It can be used to get a pointer to a QMediaPlayer object in order to integrate with C code.
QObject *qmlMediaPlayer; // The QML MediaPlayer object
QMediaPlayer *player = qvariant_cast<QMediaPlayer *>(qmlMediaPlayer->property("mediaObject"));
這是什么意思?如何將 QML MediaPlayer 與 C 集成?任何幫助都會很棒,謝謝。
uj5u.com熱心網友回復:
這將取決于您啟動 QML 應用程式的準確程度。假設它是這樣設定的:
int main(int argc, char **argv)
{
// Q(Gui)Application setup...
QQmlApplicationEngine engine;
engine.load(QUrl("qrc:/main.qml"));
// ...
}
在 QML 物件層次結構中的某個地方,您有一個 MediaPlayer:
MediaPlayer {
objectName: "player"
// ...
}
設定objectName屬性很重要,這樣您就可以在 C 代碼中按此名稱查找 MediaPlayer 實體。如上所述加載 QML 檔案后,引擎有一個根物件,您可以使用findChild或搜索findChildren(改編自此答案):
auto qmlPlayer = engine.rootObjects()[0]->findChild<QObject*>("player");
auto player = qvariant_cast<QMediaPlayer*>(qmlPlayer->property("mediaObject"));
// use the QMediaPlayer*
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/417436.html
標籤:
