QT开发中文网

#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->

好的,下面是逐行代码解释:

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

这两行是引入头文件。

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

这里定义了一个名为VideoPlayer的类,继承自QMainWindow类,用于实现视频播放器的主窗口界面。在构造函数中,首先调用了基类的构造函数,并初始化了UI界面。

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

这里创建了一个QMediaPlayer对象,并设置每隔1秒发送一次状态改变信号(默认值为10000毫秒)。

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

videoItem=new QGraphicsVideoItem;
videoItem->setSize(QSizeF(400,480));

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

这里创建了一个QGraphicsScene对象和一个QGraphicsVideoItem对象,将后者添加到场景中,并将场景设置给UI上的graphicsView控件。然后将该图形项指定给媒体播放器以作为其输出设备。

connect(player,SIGNAL(positionChanged(qint64)),this, SLOT(onPositionChanged(qint64)));

connect(player,SIGNAL(durationChanged(qint64)),this, SLOT(onDurationChanged(qint64)));

这里使用Qt提供的信号与槽机制来连接QMediaPlayer对象的positionChanged()durationChanged()信号与当前类中的槽函数onPositionChanged(qint64)onDurationChanged(qint64)

void VideoPlayer::on_pushButton_Add_clicked()
{
    QString currentpath=QDir::homePath(); // 获取系统当前目录
    QString chooseTitle="请选择视频文件"; // 打开文件对话框标题名称

    QString files=QFileDialog::getOpenFileName(this,chooseTitle,currentpath);

    if(files.isEmpty())
    {
        QMessageBox::critical(this,"错误","打开视频文件失败,请重新检查?",QMessageBox::Yes);
        return;
    }

    QFileInfo fileInfos(files); // 用QFileInfo类获取文件信息
    ui->labelCurrentMdia->setText(fileInfos.fileName());

    player->setMedia(QUrl::fromLocalFile(files));// QUrl对象传递给player->setMedia()方法,从而指定要播放的媒体源
    player->play();

这里定义了一个名为on_pushButton_Add_clicked()的槽函数,当用户点击添加按钮时将调用该函数。该函数使用Qt提供的文件对话框选择器来让用户选择要播放的视频文件,并将其路径存储到字符串变量files中。如果用户没有选中任何文件,则显示错误提示并返回。如果成功选中了一个文件,代码会调用QMediaPlayer对象的setMedia()方法来指定媒体源,并开始播放。

void VideoPlayer::on_pushButton_Sound_clicked()
{
    bool flag=player->isMuted();
    player->setMuted(!flag);

    if(flag)
        ui->pushButton_Sound->setIcon(QIcon(":/new/prefix1/soundmax.png"));
    else
        ui->pushButton_Sound->setIcon(QIcon(":/new/prefix1/soundmin.png"));
}

这里定义了一个名为on_pushButton_Sound_clicked()的槽函数,当用户点击声音按钮时将调用该函数。该函数使用QMediaPlayer对象的isMuted()方法来获取当前播放器是否静音,并通过setMuted()方法来切换播放器的静音状态。根据当前状态,代码会设置相应的图标。

void VideoPlayer::on_pushButton_Delete_clicked()
{
    int row = ui->tableWidget_history->currentRow();
    if (row >= 0) {
        // 显示确认消息框
        QMessageBox::StandardButton confirm;
        confirm = QMessageBox::question(this, "警告!", "确定要删除此条记录?",QMessageBox::Yes | QMessageBox::No);
        if (confirm == QMessageBox::Yes) {
            // 删除所选行
            ui->tableWidget_history->removeRow(row);
            // 从历史记录列表中删除相应的文件路径
            historyList.removeAt(row);
        }
    }
}

这里定义了一个名为on_pushButton_Delete_clicked()的槽函数,当用户点击删除按钮时将调用该函数。如果用户选择了一行历史记录,则代码会显示一个确认消息框并提示用户确认是否要删除该记录。如果用户点击”是”,则代码会从表格中删除所选行,并从历史记录列表中删除对应项。

以上就是该程序主要部分的逐行解释。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1796

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?