最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Qt實現(xiàn)視頻播放器功能

 更新時間:2021年09月24日 11:07:04   作者:冷月楓啊  
本文通過實例代碼給大家介紹了基于Qt實現(xiàn)視頻播放器功能,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

一、功能介紹

在這里插入圖片描述

能實現(xiàn)視頻播放

二、代碼

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QPushButton>
#include <QSlider>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QListWidget>
#include <QLabel>
#include <QSpacerItem>
#include <QVideoWidget>

/* 媒體信息結(jié)構(gòu)體 */
struct MediaObjectInfo {
    QString fileName; // 用于保存視頻文件名
    QString filePath; // 用于保存視頻文件路徑
};

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

/* 屬性 */
private:
    QMediaPlayer *videoPlayer; // 媒體播放器,用于播放視頻
    QMediaPlaylist *mediaPlaylist; // 媒體列表
    QVideoWidget *videoWidget; // 視頻顯示窗口
    QListWidget *videoListWidget; // 視頻列表
    QSlider *playProgressScrollBar; // 播放進度條
    QSlider *volumeScrollBar; // 音量條
    QPushButton *pushButton[5]; // 視頻播放器按鈕
    QHBoxLayout *hBoxLayout[3]; // 水平布局
    QWidget *hWidget[3]; // 水平容器
    QLabel *label[2]; // 標簽文本
    QWidget *vWidget[2]; // 垂直容器
    QVBoxLayout *vBoxLayout[2]; // 垂直布局
/* 函數(shù) */
public:
    void initWidget(); // 初始化窗口
    void mediaPlayerInit(); // 媒體播放初始化
    void scanVideoFiles(); // 掃描本地視頻文件

/* 槽函數(shù) */
public slots:
    void SltBtnPlayClicked(); // 播放點擊
    void SltBtnNextClicked(); // 下一首點擊
    void SltBtnVolumeDownClicked(); // 聲音加點擊
    void SltBtnVolumeUpClicked(); // 聲音減點擊
    void SltBtnFullScreenClicked(); // 全屏點擊
    void SltVideoListWidgetCliked(QListWidgetItem*); // 視頻列表點擊
    void SltMediaPlaylistCurrentIndexChanged(int); // 媒體當前項改變
    void SltMediaPlayerStateChanged(QMediaPlayer::State); // 媒體播放狀態(tài)改變
    void SltMediaPlayerDurationChanged(qint64); // 媒體時長發(fā)生變化
    void SltMediaPlayerPositionChanged(qint64); // 媒體當前播放時間發(fā)生變化
    void SltPlayProgressScrollBarReleased(); // 播放進度條
    void SltVolumeScrollBarReleased(); // 音量進度條
    void resizeEvent(QResizeEvent *event);
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include <QCoreApplication>
#include <QDir>

QString videoFilePath = "/home/luatao/qt/videoplayer/myVideo";

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    initWidget(); // 初始化窗口
    mediaPlayerInit(); // 媒體播放初始化
    scanVideoFiles(); // 掃描本地視頻
    /* 按鈕連接信號槽 */
    connect(pushButton[0], SIGNAL(clicked()), this, SLOT(SltBtnPlayClicked())); // 播放
    connect(pushButton[1], SIGNAL(clicked()),this, SLOT(SltBtnNextClicked())); // 下一首
    connect(pushButton[2], SIGNAL(clicked()), this, SLOT(SltBtnVolumeDownClicked())); // 聲音減
    connect(pushButton[3], SIGNAL(clicked()), this, SLOT(SltBtnVolumeUpClicked())); // 聲音加
    connect(pushButton[4], SIGNAL(clicked()),this, SLOT(SltBtnFullScreenClicked())); // 全屏

    /* 列表連接信號槽 */
    connect(videoListWidget, SIGNAL(itemClicked(QListWidgetItem*)),this, SLOT(SltVideoListWidgetCliked(QListWidgetItem*)));

    /* 媒體連接信號槽 */
    connect(mediaPlaylist,SIGNAL(currentIndexChanged(int)),this,SLOT(SltMediaPlaylistCurrentIndexChanged(int)));
    connect(videoPlayer,SIGNAL(stateChanged(QMediaPlayer::State)),this,SLOT(SltMediaPlayerStateChanged(QMediaPlayer::State)));
    connect(videoPlayer, SIGNAL(durationChanged(qint64)),this,SLOT(SltMediaPlayerDurationChanged(qint64)));
    connect(videoPlayer,SIGNAL(positionChanged(qint64)), this,SLOT(SltMediaPlayerPositionChanged(qint64)));

    /* 滾動條連接  */
    connect(playProgressScrollBar, SIGNAL(sliderReleased()), this, SLOT(SltPlayProgressScrollBarReleased()));
    connect(volumeScrollBar, SIGNAL(sliderReleased()),this, SLOT(SltVolumeScrollBarReleased()));
}

MainWindow::~MainWindow()
{
}

/**
 * @brief Widget::initWidget
 * 初始化窗口
 */
void MainWindow::initWidget()
{
    this->setGeometry(0, 0, 800, 480);
    QPalette pal;
    pal.setColor(QPalette::WindowText, Qt::white); // 設(shè)置窗口文字為白色

    /* 構(gòu)造對象 */
    for (int i = 0; i < 3; i++) {
        /* 水平容器 */
        hWidget[i] = new QWidget();
        hWidget[i]->setAutoFillBackground(true);
        /* 水平布局 */
        hBoxLayout[i] = new QHBoxLayout();
    }
    for (int i = 0; i < 2; i++) {
        /* 垂直容器 */
        vWidget[i] = new QWidget();
        vWidget[i]->setAutoFillBackground(true);
        /* 垂直布局 */
        vBoxLayout[i] = new QVBoxLayout();
    }
    /* 標簽 */
    for (int i = 0; i < 2; i++) {
        label[i] = new QLabel();
    }
    /* 按鍵 */
    for (int i = 0; i < 5; i++) {
        pushButton[i] = new QPushButton();
        pushButton[i]->setMaximumSize(44, 44);
        pushButton[i]->setMinimumSize(44, 44);
    }
    /* 設(shè)置按鈕的屬性 */
    pushButton[0]->setCheckable(true); // 播放
    pushButton[4]->setCheckable(true); // 全屏

    /* 設(shè)置樣式名  */
    vWidget[0]->setObjectName("vWidget0");
    vWidget[1]->setObjectName("vWidget1");
    hWidget[1]->setObjectName("hWidget1");
    hWidget[2]->setObjectName("hWidget2");
    pushButton[0]->setObjectName("btn_play");
    pushButton[1]->setObjectName("btn_next");
    pushButton[2]->setObjectName("btn_volumedown");
    pushButton[3]->setObjectName("btn_volumeup");
    pushButton[4]->setObjectName("btn_screen");

    QFont font;

    font.setPixelSize(18); // 字體大小
    label[0]->setFont(font);
    label[1]->setFont(font);
    pal.setColor(QPalette::WindowText, Qt::white);
    label[0]->setPalette(pal);
    label[1]->setPalette(pal);
    label[0]->setText("00:00"); // 播放時間顯示
    label[1]->setText("/00:00");

    /* 播放進度條 */
    playProgressScrollBar = new QSlider(Qt::Horizontal); // 水平方向
    playProgressScrollBar->setMaximumHeight(15);
    playProgressScrollBar->setObjectName("durationSlider");
    /* 聲音滾動條 */
    volumeScrollBar = new QSlider(Qt::Horizontal);
    volumeScrollBar->setRange(0, 100);
    volumeScrollBar->setMaximumWidth(80);
    volumeScrollBar->setObjectName("volumeSlider");
    volumeScrollBar->setValue(50); // 中間值
    /* 視頻列表 */
    videoListWidget = new QListWidget();
    videoListWidget->setObjectName("listWidget");
    videoListWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 隱藏垂直滾動條
    videoListWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 隱藏水平滾動條
    /* 視頻窗口 */
    videoWidget = new QVideoWidget();
    videoWidget->setStyleSheet("border-image: none;" "background: transparent;""border:none");
    videoWidget->setMinimumSize(500, 480); // 視頻窗口大小

    /* 下面是界面布局 */
    /* H0 布局 */
    vWidget[0]->setMinimumSize(300, 480);
    vWidget[0]->setMaximumWidth(300);

    hBoxLayout[0]->addWidget(videoWidget); // 視頻窗口 左邊
    hBoxLayout[0]->addWidget(vWidget[0]); // 右邊 垂直窗口

    hWidget[0]->setLayout(hBoxLayout[0]);
    hBoxLayout[0]->setContentsMargins(0, 0, 0, 0);

    setCentralWidget(hWidget[0]); // 只有Qmainwindow才能創(chuàng)建中心布局Qwidget不行

    /* V0 布局 */
    QSpacerItem *vSpacer0 = new QSpacerItem(0, 80,QSizePolicy::Minimum,QSizePolicy::Maximum);
    vBoxLayout[0]->addWidget(videoListWidget); // 添加視頻列表
    vBoxLayout[0]->addSpacerItem(vSpacer0);
    vBoxLayout[0]->setContentsMargins(0, 0, 0, 0);
    vWidget[0]->setLayout(vBoxLayout[0]);

    /* V1 布局 */
    /* 底板部件布局 */
    hWidget[1]->setMaximumHeight(15);
    hWidget[2]->setMinimumHeight(65);
    vBoxLayout[1]->addWidget(hWidget[1]);
    vBoxLayout[1]->addWidget(hWidget[2]);
    vBoxLayout[1]->setAlignment(Qt::AlignCenter);

    vWidget[1]->setLayout(vBoxLayout[1]);
    vWidget[1]->setParent(this);
    vWidget[1]->setGeometry(0, this->height() - 80, this->width(), 80);
    vBoxLayout[1]->setContentsMargins(0, 0, 0, 0);
    /* 位于最上層 */
    vWidget[1]->raise();

    /* H1 布局 */
    hBoxLayout[1]->addWidget(playProgressScrollBar); // 播放進度條
    hBoxLayout[1]->setContentsMargins(0, 0, 0, 0);
    hWidget[1]->setLayout(hBoxLayout[1]);

    /* H2 布局 */
    QSpacerItem *hSpacer0 = new QSpacerItem(300, 80,QSizePolicy::Expanding,QSizePolicy::Maximum);

    hBoxLayout[2]->addSpacing(20);
    hBoxLayout[2]->addWidget(pushButton[0]);
    hBoxLayout[2]->addSpacing(10);
    hBoxLayout[2]->addWidget(pushButton[1]);
    hBoxLayout[2]->addSpacing(10);
    hBoxLayout[2]->addWidget(pushButton[2]);
    hBoxLayout[2]->addWidget(volumeScrollBar);
    hBoxLayout[2]->addWidget(pushButton[3]);
    hBoxLayout[2]->addWidget(label[0]);
    hBoxLayout[2]->addWidget(label[1]);
    hBoxLayout[2]->addSpacerItem(hSpacer0);
    hBoxLayout[2]->addWidget(pushButton[4]);
    hBoxLayout[2]->addSpacing(20);
    hBoxLayout[2]->setContentsMargins(0, 0, 0, 0);
    hBoxLayout[2]->setAlignment(Qt::AlignLeft | Qt::AlignTop);

    hWidget[2]->setLayout(hBoxLayout[2]);
}

/**
 * @brief MainWindow::mediaPlayerInit
 * 媒體初始化
 */
void MainWindow::mediaPlayerInit()
{
    videoPlayer = new QMediaPlayer(this);
    mediaPlaylist = new QMediaPlaylist(this); // 播放列表
    mediaPlaylist->clear();
    videoPlayer->setPlaylist(mediaPlaylist);
    videoPlayer->setVideoOutput(videoWidget); // 設(shè)置視頻輸出窗口
    mediaPlaylist->setPlaybackMode(QMediaPlaylist::Loop); // 設(shè)置播放模式,Loop 是列循環(huán)
    videoPlayer->setVolume(50); // 設(shè)置默認軟件音量為 50%
}

/**
 * @brief MainWindow::scanVideoFiles
 * 掃描視頻文件
 */
void MainWindow::scanVideoFiles()
{
//    QDir dir(QCoreApplication::applicationDirPath()+ "/myVideo");
    QDir dir(videoFilePath); // 視頻文件路徑
    QDir dirbsolutePath(dir.absolutePath()); // 絕對路徑
//    qDebug() << dirbsolutePath << endl;
    if (dirbsolutePath.exists()) { // 如果目錄存在
        QStringList filter; // 定義過濾器
        /* 包含所有 xx 后綴的文件 */
        filter << "*.mp4" << "*.mkv" << "*.wmv" << "*.avi";
        /* 獲取該目錄下的所有文件 */
        QFileInfoList files = dirbsolutePath.entryInfoList(filter, QDir::Files);

        for (int i = 0; i < files.count(); i++) {
            MediaObjectInfo info;
            /* 使用 utf-8 編碼 */
            info.fileName = QString::fromUtf8(files.at(i).fileName().toUtf8().data());
            info.filePath = QString::fromUtf8(files.at(i).filePath().toUtf8().data());
            /* 媒體列表添加視頻 */
            if (mediaPlaylist->addMedia(
                QUrl::fromLocalFile(info.filePath))) {
                /* 添加到容器數(shù)組里儲存 */
                //mediaObjectInfo.append(info);
                /* 添加視頻名字至列表 */
                videoListWidget->addItem(info.fileName);
            } else {
                qDebug()<<mediaPlaylist->errorString().toUtf8().data()<< endl;
                qDebug()<< " Error number:"<< mediaPlaylist->error()<< endl;
            }
        }
    }else{
        qDebug()<< "目錄不存在 "<< endl;
    }
}
/**
 * @brief MainWindow::SltBtnPlayClicked
 * 播放點擊
 */
void MainWindow::SltBtnPlayClicked()
{
    int state = videoPlayer->state(); // 獲取播放的狀態(tài)
    switch (state) {
        case QMediaPlayer::StoppedState:
             /* 媒體播放 */
             videoPlayer->play();
             break;
        case QMediaPlayer::PlayingState:
             /* 媒體暫停 */
             videoPlayer->pause();
             break;
        case QMediaPlayer::PausedState:
             videoPlayer->play();
             break;
    }
}

/**
 * @brief MainWindow::SltBtnNextClicked
 * 下一首點擊
 */
void MainWindow::SltBtnNextClicked()
{
    videoPlayer->stop(); // 停止播放
    int count = mediaPlaylist->mediaCount(); // 獲取播放列表的視頻個數(shù)
    if (0 == count)
        return;
    /* 列表下一個 */
    mediaPlaylist->next();
    videoPlayer->play();
}

/**
 * @brief MainWindow::SltBtnVolumeDownClicked
 * 聲音減點擊
 */
void MainWindow::SltBtnVolumeDownClicked()
{
    /* 點擊每次音量-5 */
    volumeScrollBar->setValue(volumeScrollBar->value() - 5);
    videoPlayer->setVolume(volumeScrollBar->value());
}
/**
 * @brief MainWindow::SltBtnVolumeUpClicked
 * 聲音加點擊
 */
void MainWindow::SltBtnVolumeUpClicked()
{
    /* 點擊每次音量+5 */
    volumeScrollBar->setValue(volumeScrollBar->value() + 5);
    videoPlayer->setVolume(volumeScrollBar->value());
}

/**
 * @brief MainWindow::SltBtnFullScreenClicked
 * 全屏點擊
 */
void MainWindow::SltBtnFullScreenClicked()
{
    /* 全屏/非全屏操作 */
    vWidget[0]->setVisible(!pushButton[4]->isChecked());
}

/**
 * @brief MainWindow::SltVideoListWidgetCliked
 * 視頻列表點擊
 * @param item
 */
void MainWindow::SltVideoListWidgetCliked(QListWidgetItem *item)
{
    videoPlayer->stop();
    mediaPlaylist->setCurrentIndex(videoListWidget->row(item)); // 選中點擊的項
    videoPlayer->play();
}

/**
 * @brief MainWindow::SltMediaPlaylistCurrentIndexChanged
 * 媒體當前項發(fā)生改變 選中播放列表
 * @param index
 */
void MainWindow::SltMediaPlaylistCurrentIndexChanged(int index)
{
    if (-1 == index)
        return;

    /* 設(shè)置列表正在播放的項 */
    videoListWidget->setCurrentRow(index);
}

/**
 * @brief MainWindow::SltMediaPlayerStateChanged
 * 媒體播放狀態(tài)發(fā)生改變
 * @param state
 */
void MainWindow::SltMediaPlayerStateChanged(QMediaPlayer::State state)
{
    switch (state) {
        case QMediaPlayer::StoppedState:
            pushButton[0]->setChecked(false);
            break;
        case QMediaPlayer::PlayingState:
            pushButton[0]->setChecked(true);
            break;
        case QMediaPlayer::PausedState:
            pushButton[0]->setChecked(false);
            break;
    }
}
/**
 * @brief MainWindow::SltMediaPlayerDurationChanged
 * 媒體播放時長發(fā)生變化
 * @param duration
 */
void MainWindow::SltMediaPlayerDurationChanged(qint64 duration)
{
    playProgressScrollBar->setRange(0, duration / 1000); // 設(shè)置播放進度條的范圍
    int second = duration / 1000;
    int minute = second / 60;
    second %= 60;

    QString mediaDuration;
    mediaDuration.clear();

    if (minute >= 10)
        mediaDuration = QString::number(minute, 10);
    else
        mediaDuration = "0" + QString::number(minute, 10);

    if (second >= 10)
        mediaDuration = mediaDuration + ":" + QString::number(second, 10);
    else
        mediaDuration = mediaDuration + ":0" + QString::number(second, 10);

    /* 顯示媒體總長度時間 */
    label[1]->setText("/" + mediaDuration);
}
/**
 * @brief MainWindow::SltMediaPlayerPositionChanged
 * 媒體當前播放時間發(fā)生變化
 * @param position
 */
void MainWindow::SltMediaPlayerPositionChanged(qint64 position)
{
    if (!playProgressScrollBar->isSliderDown()) // 進度條沒有按下
        playProgressScrollBar->setValue(position / 1000);

    int second = position / 1000;
    int minute = second / 60;
    second %= 60;

    QString mediaPosition;
    mediaPosition.clear();

    if (minute >= 10)
        mediaPosition = QString::number(minute, 10);
    else
        mediaPosition = "0" + QString::number(minute, 10);

    if (second >= 10)
        mediaPosition = mediaPosition + ":" + QString::number(second, 10);
    else
        mediaPosition = mediaPosition + ":0" + QString::number(second, 10);

    /* 顯示現(xiàn)在播放的時間 */
    label[0]->setText(mediaPosition);
}
/**
 * @brief MainWindow::SltPlayProgressScrollBarReleased
 * 播放進度條釋放
 */
void MainWindow::SltPlayProgressScrollBarReleased()
{
    /* 設(shè)置媒體播放的位置 */
    videoPlayer->setPosition(playProgressScrollBar->value() * 1000);
}
/**
 * @brief MainWindow::SltVolumeScrollBarReleased
 * 音量進度條釋放
 */
void MainWindow::SltVolumeScrollBarReleased()
{
    /* 設(shè)置音量 */
    videoPlayer->setVolume(volumeScrollBar->value());
}
/**
 * @brief MainWindow::resizeEvent
 * 重繪窗口
 * @param event
 */
void MainWindow::resizeEvent(QResizeEvent *event)
{
    Q_UNUSED(event);
    vWidget[1]->setGeometry(0, this->height() - 80, this->width(), 80);
}

main.cpp

#include "mainwindow.h"

#include <QApplication>
#include <QFile>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    /* 指定文件 */
    QFile file(":/style.qss");

    /* 判斷文件是否存在 */
    if (file.exists() ) {
        /* 以只讀的方式打開 */
        file.open(QFile::ReadOnly);
        /* 以字符串的方式保存讀出的結(jié)果 */
        QString styleSheet = QLatin1String(file.readAll());
        /* 設(shè)置全局樣式 */
        qApp->setStyleSheet(styleSheet);
        /* 關(guān)閉文件 */
        file.close();
    }

    MainWindow w;
    w.show();
    return a.exec();
}

style.qss

QWidget {
    border-image:url(:/images/bg.png);
}

QLabel {
    border-image:none;
}

QWidget#hWidget1 {
    border-image:none;
    background:transparent;
}

QWidget#hWidget2 {
    border-image:none;
    background:transparent;
}

QWidget#vWidget1 {
    border-image:url(:/images/mask.png);
    background:#24252a;
}

QWidget#vWidget0 {
    border-image:none;
}

QListWidget#listWidget {
    color:white;
    font-size: 15px;
    border:none;
    background: "#20ffffff";
    border-image:none;
}

QListWidgetlistWidget:item:active {
    background: transparent;
}

QListWidget#listWidget:item {
    background: transparent;
    height:60;
}

QListWidget#listWidget:item:selected {
    color:#5edcf3;
    background: transparent;
}

QListWidget#listWidget:item:hover {
    background: transparent;
    color:#5edcf3;
    border:none;
}


QPushButton#btn_play {
    border-image:url(:/icons/btn_play1.png);
}

QPushButton#btn_play:hover {
    border-image:url(:/icons/btn_play2.png);
}

QPushButton#btn_play:checked {
    border-image:url(:/icons/btn_pause1.png);
}

QPushButton#btn_play:checked:hover {
    border-image:url(:/icons/btn_pause2.png);
}

QPushButton#btn_next {
    border-image:url(:/icons/btn_next1.png);
}

QPushButton#btn_next:hover {
    border-image:url(:/icons/btn_next2.png);
}

QPushButton#btn_volumedown {
    border-image:url(:/icons/btn_volumedown1.png);
}

QPushButton#btn_volumedown:hover {
    border-image:url(:/icons/btn_volumedown2.png);
}

QPushButton#btn_volumeup {
    border-image:url(:/icons/btn_volumeup1.png);
}

QPushButton#btn_volumeup:hover {
    border-image:url(:/icons/btn_volumeup2.png);
}

QSlider#durationSlider:handle:horizontal {
    border-image:url(:/icons/handle.png);
}

QSlider#durationSlider {
    border-image:none;
}

QSlider#durationSlider:add-page:horizontal {
    border-image:url(:/images/add_page.png);
}

QSlider#volumeSlider {
    border-image:none;
}
QSlider#volumeSlider:handle:horizontal {
    border-image:url(:/icons/handle.png);
}

QSlider#volumeSlider:handle:horizontal {
    background:transparent;
}

QSlider#volumeSlider:add-page:horizontal {
    border-image:url(:/images/add_page.png);
}

QPushButton#btn_screen {
    border-image:url(:/icons/btn_fullscreen1.png);
}

QPushButton#btn_screen:hover {
    border-image:url(:/icons/btn_fullscreen2.png);
}

QPushButton#btn_screen:checked {
    border-image:url(:/icons/btn_screen1.png);
}

QPushButton#btn_screen:checked:hover {
    border-image:url(:/icons/btn_screen2.png);
}

三、運行

在這里插入圖片描述
在這里插入圖片描述

到此這篇關(guān)于基于Qt實現(xiàn)視頻播放器功能的文章就介紹到這了,更多相關(guān)Qt--視頻播放器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言中的sscanf()函數(shù)使用

    C語言中的sscanf()函數(shù)使用

    本文主要介紹了C語言中的sscanf()函數(shù)使用,sscanf通常被用來解析并轉(zhuǎn)換字符串,可以實現(xiàn)很強大的字符串解析功能,下面就一起來了解一下
    2023-05-05
  • C語言中的冒泡排序問題

    C語言中的冒泡排序問題

    這篇文章主要介紹了C語言中的冒泡排序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用C++實現(xiàn)鏈表元素的反轉(zhuǎn)

    使用C++實現(xiàn)鏈表元素的反轉(zhuǎn)

    反轉(zhuǎn)鏈表是鏈表操作中一個經(jīng)典的問題,也是面試中常見的考題,本文將從思路到實現(xiàn)一步步地講解如何實現(xiàn)鏈表的反轉(zhuǎn),幫助初學者理解這一操作,我們將使用C++代碼演示具體實現(xiàn),同時分析時間復雜度和空間復雜度,需要的朋友可以參考下
    2025-02-02
  • 詳解C++語言中的加法運算符與賦值運算符的用法

    詳解C++語言中的加法運算符與賦值運算符的用法

    這篇文章主要介紹了C++語言中的加法運算符與賦值運算符的用法,是C++入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-01-01
  • C++對象排序的比較你了解嗎

    C++對象排序的比較你了解嗎

    這篇文章主要為大家詳細介紹了C++對象排序的比較,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++讀取注冊表的實現(xiàn)方法

    C++讀取注冊表的實現(xiàn)方法

    這篇文章主要介紹了C++讀取注冊表的實現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • C++實現(xiàn)猜數(shù)游戲

    C++實現(xiàn)猜數(shù)游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)猜數(shù)游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C++標準庫實現(xiàn)WAV文件讀寫的操作

    C++標準庫實現(xiàn)WAV文件讀寫的操作

    本文將使用標準C++庫實現(xiàn)對數(shù)據(jù)為PCM格式的WAV文件的讀寫操作,只使用標準C++庫函數(shù),不依賴于其他的庫,對C++標準庫實現(xiàn)WAV文件讀寫相關(guān)知識感興趣的朋友一起看看吧
    2022-01-01
  • C++中繼承與組合的區(qū)別詳細解析

    C++中繼承與組合的區(qū)別詳細解析

    C++的“繼承”特性可以提高程序的可復用性。正因為“繼承”太有用、太容易用,才要防止亂用“繼承”
    2013-09-09
  • Qt5升級到Qt6分步遷移教程小結(jié)

    Qt5升級到Qt6分步遷移教程小結(jié)

    Qt框架的一個新的長期支持版本6.5最近發(fā)布,本文主要介紹了Qt5升級到Qt6分步遷移教程小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2023-09-09

最新評論

抚顺市| 麻阳| 扎赉特旗| 景东| 阿城市| 寻乌县| 廊坊市| 天津市| 西畴县| 颍上县| 汾阳市| 新安县| 隆回县| 正阳县| 达孜县| 三亚市| 盖州市| 深泽县| 本溪| 壶关县| 墨玉县| 江源县| 东辽县| 岳池县| 中牟县| 乐平市| 营口市| 孟村| 宽甸| 泸西县| 上林县| 上虞市| 绥中县| 额济纳旗| 临猗县| 泸西县| 辽阳市| 内江市| 沂源县| 吴旗县| 莱芜市|