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动画特效
介绍
- QML(描述性的脚本语言),文件格式以.qml结尾。尤其语法格式非常像CSS,但又支持Javascript形式的编程控制。QML实际上是Qt Quick核心组件。Qt Quick是一组在帮助开发工程师创建移动电话、媒体播放器、机顶盒和其他便携设备上使用越来越多的直观、现代、流畅UI工具集合。
- PropertyAnimation元素,一般使用方式如下:作为属性值的来源;在信号处理器中创建;作为独立动画元素;在属性值改变的行为中创建。
- Qt Creater对QML完美支持、Qt Quick设计器、QML与C++混合编程等。
- 创建Qt Quick
- Qt Quick Application-Empty:空项目
- Qt Quick Application-Scroll:
- Qt Quick Application-Stack:页面切换Stack
- Qt Quick Application-Swipe:多页面切换Swipe
Qt项目实战布局管理架构
- Qt布局管理架构之QSplitter(分离部件,或者叫分裂器布局)类详解。
- 分裂器添加控件:分裂器添加控件类似layout(addWidget)。SetOpaqueResize可以决定在拖动到相应位置并弹起鼠标后分隔条的显示状态,是直接显示分割条还是显示阴影。
高性能服务器
一、服务器模型
- 并发服务器模型:所使用进程处理客户连接和请求
- 循环服务器模型:所使用循环方法来处理客户连接和请求
- 并发服务器模型IO复用:使用同一处理模块监视多个客户请求和连接
- 并发服务器模型TCP:所使用进程池或线程池进行客户请求和连接
二、高并发服务器
三、多进程并发服务器
四、多线程并发服务器
五、TCP并发服务器模型 六、I/O复用服务器模型(电脑内存与CPU)
与数据库相连接
1.下载驱动程序(ODBC)
2.在代码中运用哪些包进行连接