属性/方法名: 说明:

本文深入解析了AxWindowsMediaPlayer控件的基本属性、控制方法、设置选项及媒体属性,包括URL、播放状态、音量控制、播放列表等核心功能。详细介绍了如何通过属性和方法来操作媒体播放,提供了丰富的示例代码。
 属性/方法名: 说明: 
[基本属性]   
URL:String; 指定媒体位置,本机或网络地址 
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible 
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪 
enableContextMenu:Boolean; 启用/禁用右键菜单 
fullScreen:boolean; 是否全屏显示 
[controls] wmp.controls //播放器基本控制 
controls.play; 播放 
controls.pause; 暂停 
controls.stop; 停止 
controls.currentPosition:double; 当前进度 
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23” 
controls.fastForward; 快进 
controls.fastReverse; 快退 
controls.next; 下一曲 
controls.previous; 上一曲 
[settings] wmp.settings //播放器基本设置 
settings.volume:integer; 音量,0-100 
settings.autoStart:Boolean; 是否自动播放 
settings.mute:Boolean; 是否静音 
settings.playCount:integer; 播放次数 
[currentMedia] wmp.currentMedia //当前媒体属性 
currentMedia.duration:double; 媒体总长度 
currentMedia.durationString:string; 媒体总长度,字符串格式。如“03:24” 
currentMedia.getItemInfo(const string); 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址 
currentMedia.setItemInfo(const string); 通过属性名设置媒体信息 
currentMedia.name:string; 同 currentMedia.getItemInfo("Title") 
[currentPlaylist] wmp.currentPlaylist //当前播放列表属性 
currentPlaylist.count:integer; 当前播放列表所包含媒体数 
currentPlaylist.Item[integer]; 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia 
AxWindowsMediaPlayer控件的属性收藏
MediaPlayer1.Play          播放  
MediaPlayer1.Stop          停止  
MediaPlayer1.Pause          暂停  
MediaPlayer1.PlayCount        文件播放次数  
MediaPlayer1.AutoRewind       是否循环播放  
MediaPlayer1.Balance         声道  
MediaPlayer1.Volume         音量  
MediaPlayer1.Mute          静音  
MediaPlayer1.EnableContextMenu    是否允许在控件上点击鼠标右键时弹出快捷菜单  
MediaPlayer1.AnimationAtStart    是否在播放前先播放动画  
MediaPlayer1.ShowControls      是否显示控件工具栏  
MediaPlayer1.ShowAudioControls    是否显示声音控制按钮  
MediaPlayer1.ShowDisplay       是否显示数据文件的相关信息  
MediaPlayer1.ShowGotoBar       是否显示Goto栏  
MediaPlayer1.ShowPositionControls  是否显示位置调节按钮  
MediaPlayer1.ShowStatusBar      是否显示状态栏  
MediaPlayer1.ShowTracker       是否显示进度条  
MediaPlayer1.FastForward       快进  
MediaPlayer1.FastReverse       快退  
MediaPlayer1.Rate          快进/快退速率  
MediaPlayer1.AllowChangeDisplaySize 是否允许自由设置播放图象大小  
MediaPlayer1.DisplaySize       设置播放图象大小  
    1-MpDefaultSize         原始大小  
    2-MpHalfSize           原始大小的一半  
    3-MpDoubleSize          原始大小的两倍  
    4-MpFullScreen          全屏  
    5-MpOneSixteenthScreen      屏幕大小的1/16  
    6-MpOneFourthScreen       屏幕大小的1/4  
    7-MpOneHalfScreen        屏幕大小的1/2  
MediaPlayer1.ClickToPlay       是否允许单击播放窗口启动Media Player  
 

http://blog.youkuaiyun.com/brouse8079/archive/2007/10/17/1829885.aspx

 

AxWindowsMediaPlayer常用属性
2008-03-18 21:28
2. Ctlcontrols属性

Ctlcontrols属性是AxWindowsMediaPlayer的一个重

要属性, 此控件中有许多常用成员。

(1) 方法play

用于播放多媒体文件,其格式为:

窗体名.控件名.Ctlcontrols.play()

如: AxWindowsMediaPlayer1.Ctlcontrols.play()

‘此处缺省窗体名是Me

(2) 方法pause

用于暂停正在播放的多媒体文件,其格式为:

窗体名.控件名.Ctlcontrols.pause()

如: AxWindowsMediaPlayer1.Ctlcontrols.pause()

(3) 方法stop

用于停止正在播放的多媒体文件,其格式为:

窗体名.控件名.Ctlcontrols.stop()

如: AxWindowsMediaPlayer1.Ctlcontrols.stop()

(4) 方法fastforward

用于将正在播放的多媒体文件快进,其格式为:

窗体名.控件名.Ctlcontrols.fastforward()

如:

AxWindowsMediaPlayer1.Ctlcontrols.forward()

(5) 方法fastreverse

窗体名.控件名.Ctlcontrols.fastreverse()

如:

AxWindowsMediaPlayer1.Ctlcontrols.fastreverse

()

6. 属性CurrentPosition

用于获取多媒体文件当前的播放进度,其值是数值类

型,使用格式为:

窗体名.控件名.Ctlcontrols.currentPosition

d1=AxWindowsMediaPlayer1.Ctlcontrols.currentPosi

tion

其中d1 是一个整型变量。

7. 属性Duration

用于获取当前多媒体文件的播放的总时间,其值为数

值类型,其使用格式为:

窗体名.控件名.currentMedia.duration

如:d2

=AxWindowsMediaPlayer1.currentMedia.duration

其中d2是一个整型变量。
controls.currentPositionString:string; 当前进

度,字符串格式。如“00:23”


属性/方法名: 说明: 
[基本属性]   
URL:String; 指定媒体位置,本机或网络地址 
uiMode:String; 播放器界面模式,可为Full, Mini,

None, Invisible 
playState:integer; 播放状态,1=停止,2=暂停,

3=播放,6=正在缓冲,9=正在连接,10=准备就绪

player.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(player_PlayStateChange);

private void player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
  // Test the current state of the player and display a message for each state.
  switch (e.newState)
  {
  case 0: // Undefined
  currentStateLabel.Text = "Undefined";
  break;

  case 1: // Stopped
  currentStateLabel.Text = "Stopped";
  break;

  case 2: // Paused
  currentStateLabel.Text = "Paused";
  break;

  case 3: // Playing
  currentStateLabel.Text = "Playing";
  break;

  case 4: // ScanForward
  currentStateLabel.Text = "ScanForward";
  break;

  case 5: // ScanReverse
  currentStateLabel.Text = "ScanReverse";
  break;

  case 6: // Buffering
  currentStateLabel.Text = "Buffering";
  break;

  case 7: // Waiting
  currentStateLabel.Text = "Waiting";
  break;

  case 8: // MediaEnded
  currentStateLabel.Text = "MediaEnded";
  break;

  case 9: // Transitioning
  currentStateLabel.Text = "Transitioning";
  break;

  case 10: // Ready
  currentStateLabel.Text = "Ready";
  break;

  case 11: // Reconnecting
  currentStateLabel.Text = "Reconnecting";
  break;

  case 12: // Last
  currentStateLabel.Text = "Last";
  break;

  default:
  currentStateLabel.Text = ("Unknown State: " + e.newState.ToString());
  break;
  }
}
 

 


enableContextMenu:Boolean; 启用/禁用右键菜单 
fullScreen:boolean; 是否全屏显示 
controls.currentPosition:double; 当前进度 
controls.fastForward; 快进 
controls.fastReverse; 快退 
controls.next; 下一曲 
controls.previous; 上一曲 
[settings] wmp.settings //播放器基本设置 
settings.volume:integer; 音量,0-100 
settings.autoStart:Boolean; 是否自动播放 
settings.mute:Boolean; 是否静音 
settings.playCount:integer; 播放次数 
[currentMedia] wmp.currentMedia //当前媒体属性 
currentMedia.duration:double; 媒体总长度 
currentMedia.durationString:string; 媒体总长度

,字符串格式。如“03:24” 
currentMedia.getItemInfo(const string); 获取当

前媒体信息"Title"=媒体标题,"Author"=艺术

家,"Copyright"=版权信息,"Description"=媒体内

容描述,"Duration"=持续时间(秒),"FileSize"=

文件大小,"FileType"=文件类型,"sourceURL"=原

始地址 
currentMedia.setItemInfo(const string); 通过属

性名设置媒体信息 
currentMedia.name:string; 同

currentMedia.getItemInfo("Title") 
[currentPlaylist] wmp.currentPlaylist //当前播

放列表属性 
currentPlaylist.count:integer; 当前播放列表所

包含媒体数 
currentPlaylist.Item[integer]; 获取或设置指定

项目媒体信息,其子属性同wmp.currentMedia
<think>我们面对的问题是:QQmlApplicationEngine加载组件失败,main.qml文件第30行提示Expected token `:'、Expected token `,',第31行提示Syntax error。 根据引用[3]中的信息,Qt QML文件有时会出现错误的语法错误提示(即使实际编译运行正常),但本例中错误发生在具体行号且描述明确,应首先检查真实语法错误。 错误类型分析: 1. "Expected token `:'":通常表示在属性绑定或对象声明中缺少冒号分隔符 2. "Expected token `,'":通常表示在多个属性赋值或函数参数中缺少逗号分隔符 3. "Syntax error":一般是前两个错误导致的连锁反应 重点检查main.qml第30行和31行附近的代码。 常见错误场景: - 对象声明时属性赋值缺少冒号 - 多个属性连续赋值时缺少逗号 - 数组或对象定义时括号不匹配 - JavaScript代码段中的语法错误 解决方案步骤: 步骤1:定位错误行 打开main.qml,跳转到第30行和31行。 步骤2:检查基本语法结构 检查第30行是否有类似以下错误: - 错误示例1:`property int width 100` (缺少冒号,应为`property int width: 100`) - 错误示例2:`Text { text: "Hello" font.pixelSize: 20 }` (多个属性之间缺少逗号,应在"Hello"后加逗号) 步骤3:检查括号匹配 - 检查前一行(29行)是否有未闭合的括号、方括号或大括号 - 特别注意函数定义、数组定义和对象定义的括号嵌套 步骤4:检查字符串闭合 - 确认第30行附近的字符串引号是否成对出现 步骤5:检查保留字冲突 - 确认第30行使用的变量名或属性名不是JavaScript或QML保留字(如function、import、return等) 步骤6:最小化验证 - 如果无法直接定位错误,可以尝试注释掉第30-31行,然后逐步取消注释排查 步骤7:重启Qt Creator - 根据引用[3]的经验,有时IDE的解析器会出现异常,重启可能消除误报 典型修复案例: 案例1:属性赋值缺少冒号 ```qml // 错误代码(main.qml第30行) Item { width 100 // 错误:应为 width: 100 height: 200 } ``` 案例2:多个属性间缺少逗号 ```qml // 错误代码(main.qml第30-31行) Text { text: "Hello World" // 第30行 font { bold: true pixelSize: 20 } // 第31行(正确,但若font前缺少逗号则错误) } ``` 案例3:括号不匹配 ```qml // 错误代码(main.qml第29-31行) Rectangle { color: Qt.rgba(0.5, 0.5, 0.5 // 第29行缺少右括号 width: 100 // 第30行 } // 第31行 ``` 案例4:字符串未闭合 ```qml // 错误代码(main.qml第30行) Text { text: "This string is not closed // 缺少闭合引号 } ``` 如果经过以上检查仍未解决,建议提供main.qml第28-32行的代码片段以便针对性分析。 相关问题: 1. QML中如何正确声明对象属性? 2. QQmlApplicationEngine加载失败的其他常见原因有哪些? 3. 如何调试QML的语法错误? 4. Qt Creator的QML语法检查器有哪些局限性? 根据引用[2]中关于QML组件创建的说明,确保main.qml本身的正确性是组件加载的前提。如果main.qml是入口文件,其语法错误将直接导致引擎加载失败。 注意:如果错误发生在动态创建的组件中(如使用createComponent创建的Button.qml),则需要检查该组件的代码,但当前问题明确指向main.qml。 引用说明: [^1]: Go语言相关库引用,与本问题关联性不强 [^2]: QML组件创建方法,说明语法正确的重要性 [^3]: Qt Creator误报语法错误的案例,但本例更可能是真实错误 </think>### 解决QQmlApplicationEngine加载组件失败问题 针对您遇到的`main.qml`第30-31行语法错误,以下是系统化的解决方案: #### 错误原因分析 1. **属性声明错误**(最常见): ```qml // 错误示例 property int width 100 // 缺少冒号(:) property string text "Hello" // 缺少逗号(,) ``` 2. **对象声明格式错误**: ```qml // 错误示例 Rectangle { color: "red" width: 100 // 缺少逗号 } ``` 3. **JavaScript语法错误**: ```qml // 错误示例 onCompleted: { console.log("Start) } // 引号/括号不匹配 ``` --- ### 解决方案步骤 #### 步骤1:检查属性声明 ```qml // 正确格式(冒号+逗号) property int width: 100, // 第30行 height: 200 // 第31行 ``` #### 步骤2:验证对象声明 ```qml // 正确格式(属性间必须逗号分隔) Text { text: "Qt QML", // 第30行 font.pixelSize: 16, // 第31行(注意逗号) color: "blue" } ``` #### 步骤3:修复JavaScript代码 ```qml Component.onCompleted: { console.log("Init completed") // 检查引号/括号是否闭合 } ``` #### 步骤4:处理特殊情况 1. **版本兼容问题**(参考引用[3]): ```qml // 在文件开头添加版本声明 import QtQuick 2.9 import QtQuick.Controls 2.2 ``` 2. **IDE缓存问题**(参考引用[3]): - 清理项目:`构建 → 清理项目` - 删除`Makefile`和`build-*`目录 - 重启Qt Creator #### 步骤5:调试技巧 1. **逐行注释法**: ```qml // 第30行:暂时注释 // property int width: 100 ``` 逐步取消注释定位错误行 2. **使用QML Linter**: ```bash qmllint main.qml # 终端运行语法检查 ``` --- ### 典型修复案例 **错误代码**: ```qml Rectangle { id: mainRect width: 800 height: 600 // 第30行(缺少逗号) color: "lightgray" // 第31行 } ``` **正确修复**: ```qml Rectangle { id: mainRect width: 800, // 第30行添加逗号 height: 600, // 第31行逗号可选(但推荐) color: "lightgray" } ``` --- ### 相关问题 1. **如何处理QML中的动态对象创建错误?** 参考引用[2],使用`incubateObject`异步创建避免UI卡顿: ```qml var incubator = Qt.createComponent("Button.qml").incubateObject(parent) incubator.onStatusChanged = (status) => { if(status === Component.Ready) console.log("Created") } ``` 2. **Qt Creator误报语法错误怎么办?** 参考引用[3]解决方案: - 修改文件编码为UTF-8+BOM - 禁用`ClangCodeModel`插件(帮助→关于插件) 3. **如何在QML中调试JavaScript执行?** ``` console.log("Value:", variable) // 查看输出 console.trace() // 打印调用堆栈 ``` 4. **QML组件加载失败的其他常见原因?** - 路径错误:`qrc:/`前缀缺失 - 版本不匹配:`import`版本高于实际安装 - 权限问题:文件设为只读 > **预防建议**:在Qt Creator中启用`工具 → QML/JS → 启用实时检查`,可即时捕捉90%的语法错误[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值