【QT学习】6.控件进阶,C与C++的强制类型转换,自定义控件,qt制作一个简易播放器

发布于:2024-04-14 ⋅ 阅读:(116) ⋅ 点赞:(0)

1.C与C++的强制类型转换

2.自定义控件

要求:制作一个登录页面

1.使用控件拖拽一个页面出来

        使用水平布局,垂直布局,网格布局

2.建立自定义控件

1.为项目添加自定义的类

自己写一个控件

2.

(1)创建一个Group Box容器

(2)在容器中,右键--》提升为

(3)自定义类名称--》添加

(4)点击提升

结果:

二。制作简易播放器

1.创建工程,控件布局

0.布局

参考遥控与电视

播放页面:Widget容器+label标签

声音调控:Widget容器+滚动条

四个按钮:Widget容器+按钮

属性与函数声明:

1.添加多媒体配置

QT       += core gui multimedia multimediawidgets

2.各个按钮转到

3.创建私有属性

    QMediaPlayer*       pPlayer;        //播放器
    QVideoWidget*       pVideoWidget;   //播放窗口
    QMediaPlaylist*     pPlayerList;    //播放队列
    QString             m_fileName;     //音视频文件名
    QMediaPlayer::State m_playerState;  //播放状态

实现代码:

1.new出播放器与播放列表,播放窗口

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

    //创建播放器,播放列表,播放窗口
    pPlayer=new QMediaPlayer;
    pPlayerList=new QMediaPlaylist;
    pVideoWidget=new QVideoWidget(this);

    //播放器 指定 播放队列(播放内容)
    pPlayer->setPlaylist(pPlayerList);
    //播放器 指定 播放窗口
    pPlayer->setVideoOutput(pVideoWidget);
}

2.视频声音调整

void MainWindow::on_horizontalSlider_valueChanged(int value)
{
    pPlayer->setVolume(value);
}

3.打开视频

//写on_ptnOpen_clicked()中的addToPlayerList函数
void MainWindow::addToPlayerList(const QStringList& fileNames){
    foreach(QString const& arg,fileNames){
        QUrl url(arg);//类型转换
        pPlayerList->addMedia(url);//添加到播放列表中
    }
}
void MainWindow::on_ptnOpen_clicked()
{
    pPlayerList->clear();//清空播放队列
    //QStringList是为了存放一系列数据,Qstring不行
    QStringList fileNames=QFileDialog::getOpenFileNames(this,"找到音视频文件",
                                                    "C:/Users/Administrator/Desktop",
                                                    "allfiles(*.*);;"
                                                    "MP3(*.mp3);;"
                                                    "MP4(*.mp4);;"
                                                    "AVI(*.avi)");
    addToPlayerList(fileNames);
    pVideoWidget->resize(ui->label->size());
}

4.视频的播放暂停与停止

void MainWindow::on_ptnPlay_clicked()
{
    m_playerState=QMediaPlayer::PlayingState;
    pPlayer->play();
    pVideoWidget->resize(ui->label->size());
}

void MainWindow::on_ptnPause_clicked()
{
    m_playerState = QMediaPlayer::PausedState;
    pPlayer->pause();
}

void MainWindow::on_pushButton_4_clicked()
{
    m_playerState = QMediaPlayer::StoppedState;
    pPlayer->stop();
}

结果:丑陋但是实现


网站公告

今日签到

点亮在社区的每一天
去签到