前言:
qt6出来已经有一段时间了,多媒体模块也发生了很多变化,笔者也是刚刚使用Qt6的摄像头模块。
本次教程,笔者分享下相关内容
一、Qt准备
请阅读的小伙伴自己安装Qt6.2.1,笔者使用的是QtCreator6.0.0
qml各版本间差异较大,通用性有点差。当确定使用指定Qt版本后,不要轻易更换版本
二、新建qml工程
注:在windows下,Qt6.2.1目前不支持MinGW,只能选用VS的编译器
以上操作过程仅供小伙伴参考,请根据实际的QtCreator创建工程
三、修改pro工程文件
复制代码
1QT += qml multimedia
笔者开始编写时,并未添加多媒体模块,仍然可以正常编译并运行。笔者要提醒的是,需要加上这些模块,否则换个平台或编译器就无法正常编译或运行了
四、新建Home页面
以上添加上步骤仅供小伙伴们参考
使用设计器修改界面如下
关键UI代码
复制代码
1
2
3
4
5
6
7//用于显示摄像头数据的取景器 VideoOutput { id: videoOutput anchors.fill: parent source: camera }
以下Home.qml的代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62HomeForm { id:page property var camreaDevices comboBox.model:ListModel { id: model } MediaDevices { id: mediaDevices } Camera { id: camera } CaptureSession { camera: camera videoOutput: page.videoOutput } Connections { target: comboBox function onCurrentIndexChanged(){//当前的值发生了变化 camera.cameraDevice = page.camreaDevices[comboBox.currentIndex] } } Connections { target: button_start function onClicked() {//开启摄像头 camera.start() } } Connections { target: button_stop function onClicked() {//关闭摄像头 camera.stop() } } Component.onCompleted: { //初始化摄像头选择框 camreaDevices = mediaDevices.videoInputs for(let i = 0; i < camreaDevices.length; i ++) { let json = {} json["text"] = camreaDevices[i].description json["value"] = camreaDevices[i].id model.append(json) console.debug("qqqqqqqqqqqqqq",JSON.stringify(json),camreaDevices[i]) if(camreaDevices[i] === mediaDevices.defaultVideoInput) { comboBox.currentIndex = i } } } }
五、调用创建的页面
修改main.qml,关键代码如下
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14StackView { id: stackView initialItem: component_home //初始页面修改为新增加的页面组件 anchors.fill: parent } //新增页面组件 Component { id: component_home Home { width: stackView.width height: stackView.height } }
完成以上操作,就可以运行程序了,以下是笔者在win10下的运行结果
遇到的问题
1.cameraDevice的id只能打印看,无法当普通字符串使用
2.cameraDevice的bool isDefault()返回的永远都是false无法正常使用
以上问题应该是Qt6未解决的bug,我们静待官方修改
本次教程使用的源码
后记:
因时间关系,笔者只在win10下使用VS2019(64位),android(arm8_64)测试,其他平台未测试,感兴趣的小伙伴可以测试下其他平台
最后
以上就是负责黑裤最近收集整理的关于QR扫码综合示例教程(十一)Qt6.2.1(qml)摄像头显示的全部内容,更多相关QR扫码综合示例教程(十一)Qt6内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复