实战教学知识

Qt详解

Qt开发

QT5 视频播放器详解:

一 、创建项目

 文件-->新建文件或项目-->Application-->Qt Widgets Application -->Choose-->填写名称、创建路径-->下一步-->选择合适kit,完成。

二、调整按钮布局

(容易上手) 

图片资源添加(需注意要先在该项目中创建该文件夹并保存图片,再进行一下步骤,否则会找不到有效路径)

三、功能实现

在VideoPlayerTest.pro中添加两个组件

QT +=multimedia
QT +=multimediawidgets

在videoplayer.h中添加头文件和定义函数

#ifndef VIDEOPLAYER_H
#define VIDEOPLAYER_H

#include <QMainWindow>

#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QVideoWidget>

#include <QGraphicsVideoItem>

#include <QFileDialog>
#include <QGraphicsScene>

#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class VideoPlayer; }
QT_END_NAMESPACE

class VideoPlayer : public QMainWindow
{
    Q_OBJECT

public:
    VideoPlayer(QWidget *parent = nullptr);
    ~VideoPlayer();

private:
    Ui::VideoPlayer *ui;


private:
    QMediaPlayer *player;
    QGraphicsVideoItem *videoItem;

    QString durationTime;
    QString positionTime;

private slots:
    //自定义槽函数
    void onStateChanged(QMediaPlayer::State stat);
    void onDurationChanged(qint64 duration);
    void onPositionChanged(qint64 position);


    void on_pushButton_Add_clicked();
    void on_pushButton_Player_clicked();
    void on_pushButton_Sound_clicked();
};
#endif // VIDEOPLAYER_H

 在videoplayer.cpp中实现功能

#include "videoplayer.h"
#include "ui_videoplayer.h"

VideoPlayer::VideoPlayer(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::VideoPlayer)
{
    ui->setupUi(this);

    player=new QMediaPlayer(this);
    player->setNotifyInterval(2000);

    QGraphicsScene *scene = new QGraphicsScene(this);
    ui->graphicsView->setScene(scene);

    videoItem=new QGraphicsVideoItem;
    videoItem->setSize(QSizeF(380,260));
    videoItem->setFlags(QGraphicsItem::ItemIsMovable|
                       QGraphicsItem::ItemIsSelectable|
                       QGraphicsItem::ItemIsFocusable);

    scene->addItem(videoItem);
    player->setVideoOutput(videoItem);

    connect(player,SIGNAL(stateChanged(QMediaPlayer::State)),
            this,SLOT(onStateChanged(QMediaPlayer::State)));
}

VideoPlayer::~VideoPlayer()
{
    delete ui;
}


void VideoPlayer::on_pushButton_Add_clicked()
{
    QString currentpath=QDir::homePath(); //获取系统当前目录
    QString dlgTitle="请选择视频文件"; //打开文件对话框标题名称
    QString strfilter="Mp4 Files(*.mp4);;All Files(*.*)"; //文件过滤器
    QString allfiles=QFileDialog::getOpenFileName(this,dlgTitle,currentpath,strfilter);

    if(allfiles.isEmpty()){
        QMessageBox::critical(this,"错误","打开视频文件失败,请重新检查!",QMessageBox::Yes);
        return;
    }
    QFileInfo fileInfos(allfiles); //获取文件信息
    ui->labelCurrentMedia->setText(fileInfos.fileName());

    player->setMedia(QUrl::fromLocalFile(allfiles));
    player->play();

}
void VideoPlayer::onStateChanged(QMediaPlayer::State state)
{

    ui->pushButton_Player->setEnabled(!(state==QMediaPlayer::PlayingState));
    ui->pushButton_Pause->setEnabled((state==QMediaPlayer::PlayingState));
    ui->pushButton_Stop->setEnabled((state==QMediaPlayer::PlayingState));
}
void VideoPlayer::onDurationChanged(qint64 duration){

}
void VideoPlayer::onPositionChanged(qint64 position){

}

void VideoPlayer::on_pushButton_Player_clicked()
{
    player->play();
}

void VideoPlayer::on_pushButton_Sound_clicked()
{
    //需注意:是在播放过程中改变,此时运行不会有显示结果
    bool mte=player->isMuted();
    player->setMuted(!mte);

    if(mte)
        ui->pushButton_Sound->setIcon(QIcon(":/new/prefix/images/2.jpeg"));
    else
        ui->pushButton_Sound->setIcon(QIcon(":/new/prefix/images/6.webp"));
}

深度剖析Qt中的QML动画特效 

介绍

  1. QML(描述性的脚本语言),文件格式以.qml结尾。尤其语法格式非常像CSS,但又支持Javascript形式的编程控制。QML实际上是Qt Quick核心组件。Qt Quick是一组在帮助开发工程师创建移动电话、媒体播放器、机顶盒和其他便携设备上使用越来越多的直观、现代、流畅UI工具集合。
  2. PropertyAnimation元素,一般使用方式如下:作为属性值的来源;在信号处理器中创建;作为独立动画元素;在属性值改变的行为中创建。
  3. Qt Creater对QML完美支持、Qt Quick设计器、QML与C++混合编程等。
  4. 创建Qt Quick
  •  Qt Quick Application-Empty:空项目
  •  Qt Quick Application-Scroll:
  •  Qt Quick Application-Stack:页面切换Stack
  •  Qt Quick Application-Swipe:多页面切换Swipe

Qt项目实战布局管理架构

  1. Qt布局管理架构之QSplitter(分离部件,或者叫分裂器布局)类详解。
  2. 分裂器添加控件:分裂器添加控件类似layout(addWidget)。SetOpaqueResize可以决定在拖动到相应位置并弹起鼠标后分隔条的显示状态,是直接显示分割条还是显示阴影。

高性能服务器

一、服务器模型

  1. 并发服务器模型:所使用进程处理客户连接和请求
  2. 循环服务器模型:所使用循环方法来处理客户连接和请求
  3. 并发服务器模型IO复用:使用同一处理模块监视多个客户请求和连接
  4. 并发服务器模型TCP:所使用进程池或线程池进行客户请求和连接

二、高并发服务器

三、多进程并发服务器 

四、多线程并发服务器

五、TCP并发服务器模型 六、I/O复用服务器模型(电脑内存与CPU) 

与数据库相连接

1.下载驱动程序(ODBC)

2.在代码中运用哪些包进行连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

curry•库里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值