qt小项目

mainwindows.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <imagewidget.h>
#include <QMainWindow>
#include <Qurl>
#include<QDesktopServices>
#include<QFileDialog>
#include<QMessageBox>
#include<Qpainter>
#include <Qimage>
#include <QWidget>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QVideoWidget>
#include <QVBoxLayout>
#include <mainwindow.h>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
public slots:
    void slot_itemClicked(QListWidgetItem*);
public:
    explicit MainWindow(QWidget *parent = 0);
    //ImageWidget q;
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_play_and_pause_clicked();

public:
    Ui::MainWindow *ui;
private:
    QMediaPlayer *mediaPlayer;
    QVideoWidget *videoWidget;
    QMediaPlaylist *mediaPlayerlist;
    //QWidget * widget;
    QVBoxLayout *layout_video;
private:
    QStringList m_imgList;      // 文件目录下所有的图像文件名
    QListWidget *m_listWidget;  // 预览窗口
    QString m_strPath;          // 文件夹路径
    QLabel m_showWidget;        // 图像显示窗口

};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDir>
#include <QStringList>
#include <QListWidget>
#include <QVBoxLayout>
#include <QListWidgetItem>
#include <mainwindow.h>
#include "ui_mainwindow.h"
bool play_state;
//是否重新载入视频
bool if_reload=false;
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->pushButton_play_and_pause->setEnabled(false);
    //ui->pushButton_volume->setEnabled(false);
}

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


void MainWindow::on_pushButton_clicked()
{
    QString path = QFileDialog::getOpenFileName(this, tr("选择视频"), ".", tr("Image Files(*.flv *.mp4)"));//得到视频路径
    //播放状态,true为播放,false为暂停

    QFile file(path);
    if(!file.open(QIODevice::ReadOnly))
     {
         QMessageBox::information(NULL, "Title", "Content", QMessageBox::Ok, QMessageBox::Ok);
         return;
     }
     if(if_reload)
     {//重新加载视频时,重置以下变量
         delete layout_video;
         delete mediaPlayer;
         delete videoWidget;

     }
     if_reload = true;

     mediaPlayer = new QMediaPlayer();

     videoWidget = new QVideoWidget();

     layout_video = new QVBoxLayout;
         //player = new QMediaPlayer;
        // widget = new QVideoWidget;
         //设置视频播放区域与Label的边距
         layout_video->setMargin(1);
         //根据label_player尺寸设置播放区域

         mediaPlayer->setMedia(QUrl::fromLocalFile(path));
           //play_state为true表示播放,false表示暂停
           play_state = true;
           //启用播放/暂停按钮,并将其文本设置为“暂停”
           ui->pushButton_play_and_pause->setEnabled(true);
           ui->pushButton_play_and_pause->setText("暂停");
           //播放器开启
           videoWidget->resize(ui->label_player->size());
           layout_video->addWidget(videoWidget);
           ui->label_player->setLayout(layout_video);

           mediaPlayer->setVideoOutput(videoWidget);
           mediaPlayer->play();




     //mediaPlayer->setVideoOutput(ui->widget);
     //第一种方法:mediaPlayer直接setMedia()
     //mediaPlayer->setMedia(QUrl::fromLocalFile(path));
    // mediaPlayer->play();
}
void MainWindow::on_pushButton_play_and_pause_clicked()
{
    //反转播放状态
        if(play_state)
        {
            mediaPlayer->pause();
            ui->pushButton_play_and_pause->setText("播放");
        }
        else
        {
            mediaPlayer->play();
            ui->pushButton_play_and_pause->setText("暂停");
        }

        play_state = !play_state;
}
void MainWindow::on_pushButton_2_clicked()
{
        this->setWindowTitle("云胡");
        this->setMinimumSize(800, 600);
        this->setMaximumSize(1600,1200);
        m_showWidget.setWindowTitle("Image Show");
        m_showWidget.setAlignment(Qt::AlignCenter);

        const QSize IMAGE_SIZE(250, 150);
        const QSize ITEM_SIZE(250, 150);

        // 判断路径是否存在
        m_strPath = "E:\\img";
        QDir dir(m_strPath);
        if (!dir.exists()) {
            return;
        }
        // 设置过滤器
        dir.setFilter(QDir::Files | QDir::NoSymLinks);
        QStringList filters;
        filters << "*.png" << "*.jpg";
        dir.setNameFilters(filters);
        m_imgList = dir.entryList();
        if (m_imgList.count() <= 0) {
            return;
        }

        // QListWidget基本设置
        m_listWidget = new QListWidget(this);
        m_listWidget->setIconSize(IMAGE_SIZE);
        m_listWidget->setResizeMode(QListView::Adjust);
        m_listWidget->setViewMode(QListView::IconMode);
        m_listWidget->setMovement(QListView::Static);
        m_listWidget->setSpacing(8);

        // 创建单元项


        for (int i = 0; i<m_imgList.count(); ++i) {
            //img->load(m_strPath + "\\" + m_imgList.at(i));
            //ui->label->setPixmap(pixmap);
            QPixmap pixmap(m_strPath + "\\" + m_imgList.at(i));
            QListWidgetItem *listWidgetItem = new QListWidgetItem(QIcon(pixmap.scaled(IMAGE_SIZE)), m_imgList.at(i));
            listWidgetItem->setSizeHint(ITEM_SIZE);
            m_listWidget->insertItem(i, listWidgetItem);
        }

        // 窗口布局
        QVBoxLayout *mainLayout = new QVBoxLayout;
        mainLayout->addWidget(m_listWidget);
        mainLayout->setMargin(0);
        //this->setLayout(mainLayout);
        ui->label->setLayout(mainLayout);
        // 信号与槽
        connect(m_listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(slot_itemClicked(QListWidgetItem*)));//点击了某个图片调用函数
    }

    // 最大化窗口显示图像

void MainWindow::slot_itemClicked(QListWidgetItem * item) {
             m_showWidget.setPixmap(QPixmap(m_strPath + "\\" + m_imgList.at(m_listWidget->row(item))));
             m_showWidget.showMaximized();
   }

转载于:https://www.cnblogs.com/pjc20/p/7707636.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值