mirror of https://github.com/qt/qtdoc.git
Use QML_ELEMENT macro instead of qmlRegister* for mediaplayer
Updated the MediaPlayer example to use compile-time QML registration via the QML_ELEMENT macros instead of qmlRegisterSingletonType. This aligns the example with modern Qt 6 best practices and improves startup performance and tooling integration. Pick-to: 6.9 6.8 Task-number: QTBUG-136712 Change-Id: Id34670f4d45200b9a1424612f5a05bebead0a60e Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
This commit is contained in:
parent
fea28023bc
commit
303c85a782
|
@ -13,6 +13,11 @@ qt_add_executable(MediaPlayerApp
|
||||||
filenameprovider.h
|
filenameprovider.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
qt_add_qml_module(MediaPlayerApp
|
||||||
|
URI "io.qt.filenameprovider"
|
||||||
|
VERSION 1.0
|
||||||
|
)
|
||||||
|
|
||||||
qt_add_ios_ffmpeg_libraries(MediaPlayerApp)
|
qt_add_ios_ffmpeg_libraries(MediaPlayerApp)
|
||||||
|
|
||||||
add_subdirectory(MediaPlayer)
|
add_subdirectory(MediaPlayer)
|
||||||
|
|
|
@ -10,7 +10,6 @@ import QtQuick.Layouts
|
||||||
import QtCore
|
import QtCore
|
||||||
import MediaControls
|
import MediaControls
|
||||||
import Config
|
import Config
|
||||||
|
|
||||||
import io.qt.filenameprovider
|
import io.qt.filenameprovider
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
|
|
@ -6,11 +6,15 @@
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <qqmlregistration.h>
|
||||||
|
|
||||||
// Helper class to retrieve the filename from the given path using QFileInfo
|
// Helper class to retrieve the filename from the given path using QFileInfo
|
||||||
class FileNameProvider: public QObject
|
class FileNameProvider: public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
QML_ELEMENT
|
||||||
|
QML_SINGLETON
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit FileNameProvider(QObject* parent = nullptr): QObject(parent) {}
|
explicit FileNameProvider(QObject* parent = nullptr): QObject(parent) {}
|
||||||
Q_INVOKABLE static QString getFileName(const QString &p) { return QFileInfo(p).fileName(); }
|
Q_INVOKABLE static QString getFileName(const QString &p) { return QFileInfo(p).fileName(); }
|
||||||
|
|
|
@ -7,9 +7,6 @@
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QMediaFormat>
|
#include <QMediaFormat>
|
||||||
#include <QMimeType>
|
#include <QMimeType>
|
||||||
|
|
||||||
#include "filenameprovider.h"
|
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
using namespace Qt::Literals::StringLiterals;
|
using namespace Qt::Literals::StringLiterals;
|
||||||
|
@ -52,13 +49,6 @@ int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QGuiApplication app(argc, argv);
|
QGuiApplication app(argc, argv);
|
||||||
|
|
||||||
qmlRegisterSingletonType<FileNameProvider>("io.qt.filenameprovider", 1, 0, "FileNameProvider",
|
|
||||||
[] (QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
|
|
||||||
static auto * provider = new FileNameProvider();
|
|
||||||
return provider;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
QCoreApplication::setApplicationName("MediaPlayer Example");
|
QCoreApplication::setApplicationName("MediaPlayer Example");
|
||||||
QCoreApplication::setOrganizationName("QtProject");
|
QCoreApplication::setOrganizationName("QtProject");
|
||||||
QCoreApplication::setApplicationVersion(QT_VERSION_STR);
|
QCoreApplication::setApplicationVersion(QT_VERSION_STR);
|
||||||
|
|
Loading…
Reference in New Issue