qt如何显示视频?qt单行输入框怎么创建?

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工具网。

推荐阅读:

程序员面试流程是什么?面试项目经验怎么写?

mybatis怎么分页?mybatis分页功能实现

java接口可以被继承吗?java接口如何继承?