Qt是一个跨平台的 C++ 开发库,主要用来开发图形用户界面程序,当然也可以开发不带界面的命令行程序。在开发其qt的过程中,有时候我们需要在qt中显示相关视频,那qt如何显示视频?下面来我们就来给大家讲解一下。
QT显示视频QVideoWidget
Header: #include qmake: QT += multimediawidgets Inherits: QWidget and QMediaBindableInterface
AVframe pFrameRGB的data 实际指向rgbBuffer 其中存储的是YUV或RGB数据 可将rgbBuffer绑定到QImage
//ffmpeg 分配frame结构体 pFrameRGB = av_frame_alloc(); //获取视频帧的实际占用空间大小 rgbNumBytes = av_image_get_buffer_size(AV_PIX_FMT_BGR24, dec_ctx->width, dec_ctx->height, 1); //分配视频帧存储空间 rgbBuffer = (unsigned char*)av_malloc(rgbNumBytes); //data 帧存储空间 linesize数组 保存YUV三分量的起始地址 ret = av_image_fill_arrays(pFrameRGB->data, pFrameRGB->linesize, rgbBuffer, AV_PIX_FMT_BGR24, dec_ctx->width, dec_ctx->height, 1);
image = std::make_shared((uchar*)rgbBuffer, dec_ctx->width, dec_ctx->height, QImage::Format_RGB32); //rgbBuffer为ffmpeg 与AVFrame 绑定的内存 将qImage 绑定到实际的帧存储地址 QVideoWidget* frame = new QVideoWidget(); // 缩放成和窗口一样的大小 QImage img = media->image->scaled(frame->width(), frame->height(), Qt::KeepAspectRatio, Qt::FastTransformation); QVideoSurfaceFormat format(img.size(), QVideoFrame::Format_RGB32); frame->videoSurface()->start(format); //显示视频帧 frame->videoSurface()->present(img);
qt单行输入框怎么创建?
每个单行输入框都是 QLineEdit 类的一个实例对象,QLineEdit 类提供有两个构造函数,分别是:
QLineEdit(QWidget *parent = Q_NULLPTR) QLineEdit(const QString &contents, QWidget *parent = Q_NULLPTR)
contents 参数用于指定输入框中的文本内容;parent 参数用于指定新建输入框控件的父窗口,新建输入框将会内嵌到父窗口上,作为父窗口的一个子控件。当然,我们也可以不指定父窗口,那么新建的输入框就会作为独立的窗口。
在 QLineEdit 输入框中,用户可以直接输入一行文本,也可以粘贴一行文本,还可以修改输入框内的文本。某些实际场景中,QLineEdit 输入框还可以对用户输入的内容加以限定,比如:
限定文本的长度,例如用户最多可以输入 20 个字符;
输入文本的格式,例如用户输入出生日期时,必须按照“yy-mm-dd”的格式输入;
输入的文本内容,例如当前输入框仅允许用户输入数字,或者只允许用户输入英文字符。
QLineEdit单行输入框的用法示例
下面的实例给大家演示了 QLineEdit 单行输入框控件的基本用法,同时还演示了几个成员方法的用法。
#include <QApplication> #include <QWidget> #include <QLineEdit> using namespace std; int main(int argc, char * argv[]) { QApplication a(argc, argv); //创建一个窗口,作为输入框的父窗口 QWidget widget; //设置窗口的标题 widget.setWindowTitle("QWidget窗口"); //接下来,分别创建两个输入框,用于让用户分别输入账号和密码 //创建账号输入框 QLineEdit lineEdit( & widget); //指定输入框位于父窗口中的位置 lineEdit.move(100, 100); //设置提示信息 lineEdit.setPlaceholderText("请输入账号..."); //让输入框显示“一键清除”按钮 lineEdit.setClearButtonEnabled(true); //创建密码输入框 QLineEdit lineEditPass( & widget); lineEditPass.setPlaceholderText("请输入密码..."); lineEditPass.move(100, 150); //指定文本显示方式,保护用户账号安全 lineEditPass.setEchoMode(QLineEdit::Password); //指定窗口的尺寸和显示文字的大小 widget.resize(500, 300); widget.setFont(QFont("宋体", 16)); widget.show(); return a.exec(); }
我们在创建qt单行输入框的时候,可以利用QLineEdit,它是 Qt 提供的一个控件类,它直接继承自 QWdiget 类,专门用来创建单行输入框,大家可以试试哦!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: