Media Player示例使用Microsoft Media Player ActiveX控件来实现功能正常的媒体播放器应用程序。
Media Player示例使用Microsoft Media Player ActiveX控件来实现功能正常的媒体播放器应用程序。

开始前先介绍一下我们的Qt商业控件:
- QtitanRibbon| 下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
- QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面。
- QtitanNavigation | 下载试用 :模拟Microsoft Dynamics CRM-2016/Office 365导航界面和一组控件改善Qt.C ++应用程序用户体验的QtitanNavigation组件。

Media Player演示了Qt应用程序如何使用信 ,插槽和dynamicCall()功能与嵌入式ActiveX控件进行通信。
class MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(); ~MainWindow(); void openMedia(const QString &mediaUrl);public slots: void on_mediaPlayer_PlayStateChange(int newState); void on_actionOpen_triggered(); void on_actionExit_triggered(); void on_actionAbout_triggered(); void on_actionAboutQt_triggered();private: void updateWindowTitle(const QString &state); Ui::MainWindow m_ui;};
MainWindow类使用Qt Designer创建的Ui::MainWindow类声明了一个基于QMainWindow的用户界面。实现了许多插槽来处理来自用户界面元素的事件,包括mediaPlayer对象,它是一个QAxWidget,托管Microsoft Media Player ActiveX控件。
MainWindow::MainWindow(){ m_ui.setupUi(this); QSettings settings(QSettings::IniFormat, QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName()); const QByteArray restoredGeometry = settings.value(QLatin1String(geometryKey)).toByteArray(); if (restoredGeometry.isEmpty() || !restoreGeometry(restoredGeometry)) { const QRect availableGeometry = screen()->availableGeometry(); const QSize size = (availableGeometry.size() * 4) / 5; resize(size); move(availableGeometry.center() - QPoint(size.width(), size.height()) / 2); } m_ui.mediaPlayer->dynamicCall("enableContextMenu", false); m_ui.mediaPlayer->dynamicCall("stretchToFit", true); updateWindowTitle("");}
构造函数初始化用户界面,还原以前保存的窗口几何形状,并使用该dynamicCall()函数调用由Microsoft Media Player ActiveX控件实现的API,以设置初始配置参数。
void MainWindow::on_mediaPlayer_PlayStateChange(int newState){ static const QHash<int, const char *> stateMapping { {1, "Stopped"}, {2, "Paused"}, {3, "Playing"}, {4, "Scanning Forwards"}, {5, "Scanning Backwards"}, {6, "Buffering"}, {7, "Waiting"}, {8, "Media Ended"}, {9, "Transitioning"}, {10, "Ready"}, {11, "Reconnecting"}, }; const char *stateStr = stateMapping.value(newState, ""); updateWindowTitle(tr(stateStr));}
当对象的状态改变时,on_mediaPlayer_PlayStateChange插槽将处理mediaPlayer对象发出的信 。
void MainWindow::openMedia(const QString &mediaUrl){ if (!mediaUrl.isEmpty()) m_ui.mediaPlayer->dynamicCall("URL", mediaUrl);}
openMedia()函数允许通过使用该dynamicCall()函数在ActiveX控件中设置URL属性来打开媒体文件,从而导致该媒体文件被加载和播放。
int main(int argc, char *argv[]){ QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication app(argc, argv); QCoreApplication::setApplicationVersion(QT_VERSION_STR); QCoreApplication::setApplicationName(QLatin1String("Active Qt Media Player")); QCoreApplication::setOrganizationName(QLatin1String("QtProject")); MainWindow w; QCommandLineParser parser; parser.setApplicationDescription(QCoreApplication::applicationName()); parser.addHelpOption(); parser.addVersionOption(); parser.addPositionalArgument("file", "The media file to open."); parser.process(app); if (!parser.positionalArguments().isEmpty()) w.openMedia(parser.positionalArguments().constFirst()); w.show(); return app.exec();}
该main()函数使用标准Qt API启动应用程序,并使用可选的命令行参数作为要由播放器加载的媒体文件的名称。
要构建示例,必须首先构建QAxContainer库。然后运行您的make工具examples/activeqt/mediaplayer并运行生成的mediaplayer.exe。
下载Qt立刻体验吧!!
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!