在一些传统应用中,如果想使用 Qt 在 QWidget 或者 QML 中显示自定义的视频数据流,需要引入 OpenGL 来实现。而实际 Qt 已经准备了 VideoOutput 类型可以很方便的调用系统摄像头和使用自定义数据流。在 Qt 官网中,VideoOutput 的介绍中说明,source
属性可以是一个自定义派生于 QObject 的子类,并提供一个类型为 QMediaObject 的属性命名为 mediaObject
,或者是一个派生与 QObject 的子类并提供一个类型为 QAbstractVideoSurface 的属性命名为 videoSurface。其中任意一个方法都可以实现自定义视频数据流的播放,本文介绍第二种方法。参考资料:https://stackoverflow.com/questions/43854589/custom-source-property-for-videooutput-qml
C++ 和 QML 的正确交互方法
相关资料
- C++ 操作 QML:https://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html
- QML 操作 C++:https://doc.qt.io/qt-5/qtqml-cppintegration-topic.html
- QML 和 C++ 集成:https://doc.qt.io/qt-5/qtqml-cppintegration-overview.html
- QML 动态生成图像:https://doc.qt.io/qt-5/qquickimageprovider.html
- C++ Plugin for QML:https://doc.qt.io/qt-5/qtqml-modules-cppplugins.html
Qt 模拟 HTTP 表单提交文字或文件到服务器
传统通过 HTTP 表单的方式来上传文件在 Web 中实现是非常简单的,一个表单中加几个域填写上对应的内容提交就可以了,但如果通过 Qt 来实现就相对麻烦一点,不过我都总结好了代码,直接使用就可以了。
需要用到的模块
- QNetworkAccessManager 用来发起 GET/POST 请求
- QNetworkReply 用来描述响应信息
- QHttpMultiPart 用来模拟表单域
- QNetworkRequest 用来构建请求地址等信息