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

Qt實現(xiàn)文件拖拽打開加載的示例詳解

 更新時間:2025年12月24日 09:22:39   作者:戀戀西風(fēng)  
這篇文章主要為大家詳細(xì)介紹了sh8i8yQt實現(xiàn)文件拖拽打開加載的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

最近事比較多,這個很久之前要整理,一直沒發(fā)上來,今天必須整理發(fā)布

Qt實現(xiàn)文件拖拽加載

效果:

拖動文件到程序中打開

基本實現(xiàn)原理

Qt 的文件拖拽功能基于 MIME(Multipurpose Internet Mail Extensions)系統(tǒng)和拖拽事件機(jī)制:

  • 拖拽檢測:當(dāng)用戶拖動文件到應(yīng)用程序窗口時,Qt 會檢測到拖拽操作
  • MIME 數(shù)據(jù)處理:Qt 解析拖拽數(shù)據(jù)中的 MIME 類型信息
  • 事件處理:通過重寫拖拽相關(guān)事件函數(shù)來處理文件拖拽

主要使用函數(shù)

Qt 提供了一套的框架實現(xiàn)拖拽支持,主要有將其拆分成了拖拽(Drag)放置(Drop) 這兩部分

dragEnterEvent; dropEvent()函數(shù)

protected:
    virtual void dragEnterEvent(QDragEnterEvent* event) override;
    virtual void dropEvent(QDropEvent* event) override;

基本實現(xiàn)步驟

1. 啟用拖拽接受

// 在構(gòu)造函數(shù)或初始化函數(shù)中
setAcceptDrops(true);

2. 重寫拖拽事件處理函數(shù)

#include <QDragEnterEvent>
#include <QDropEvent>
#include <QMimeData>
#include <QFileInfo>
#include <QDebug>

拖拽進(jìn)入事件

void Widget::dragEnterEvent(QDragEnterEvent *event)
{
    // 檢查拖拽數(shù)據(jù)中是否包含文件
    if (event->mimeData()->hasUrls()) {
        // 可選:檢查文件類型
        QList<QUrl> urls = event->mimeData()->urls();
        for (const QUrl &url : urls) {
            QFileInfo fileInfo(url.toLocalFile());
            QString suffix = fileInfo.suffix().toLower();
            
            // 只接受特定類型的文件
            if (suffix == "txt" || suffix == "png" || suffix == "jpg") {
                event->acceptProposedAction();
                return;
            }
        }
    }
    
    // 或者簡單接受所有文件
    // if (event->mimeData()->hasUrls()) {
    //     event->acceptProposedAction();
    // }
}

拖拽移動事件

void Widget::dragMoveEvent(QDragMoveEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        event->acceptProposedAction();
    }
}

拖拽離開事件

void Widget::dragLeaveEvent(QDragLeaveEvent *event)
{
    event->accept();
}

放置事件處理

void Widget::dropEvent(QDropEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        QList<QUrl> urls = event->mimeData()->urls();
        
        for (const QUrl &url : urls) {
            QString filePath = url.toLocalFile();
            QFileInfo fileInfo(filePath);
            
            if (fileInfo.isFile()) {
                // 處理文件
                handleDroppedFile(filePath);
            } else if (fileInfo.isDir()) {
                // 處理文件夾
                handleDroppedDirectory(filePath);
            }
        }
        
        event->acceptProposedAction();
    }
}

完整示例代碼

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLabel>
#include <QTextEdit>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);

protected:
    void dragEnterEvent(QDragEnterEvent *event) override;
    void dragMoveEvent(QDragMoveEvent *event) override;
    void dropEvent(QDropEvent *event) override;

private:
    QTextEdit *textEdit;
    QLabel *statusLabel;
    
    void handleDroppedFile(const QString &filePath);
    void loadTextFile(const QString &filePath);
    void loadImageFile(const QString &filePath);
};

#endif

實現(xiàn)文件

#include "mainwindow.h"
#include <QVBoxLayout>
#include <QDragEnterEvent>
#include <QDropEvent>
#include <QMimeData>
#include <QUrl>
#include <QFileInfo>
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include <QPixmap>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 設(shè)置窗口屬性
    setWindowTitle("文件拖拽加載示例");
    setMinimumSize(600, 400);
    
    // 創(chuàng)建中央部件
    QWidget *centralWidget = new QWidget(this);
    setCentralWidget(centralWidget);
    
    // 創(chuàng)建界面組件
    textEdit = new QTextEdit(this);
    textEdit->setPlaceholderText("將文件拖拽到此處...");
    
    statusLabel = new QLabel("準(zhǔn)備就緒", this);
    
    // 布局
    QVBoxLayout *layout = new QVBoxLayout(centralWidget);
    layout->addWidget(textEdit);
    layout->addWidget(statusLabel);
    
    // 啟用拖拽接受
    setAcceptDrops(true);
}

void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        // 檢查文件類型
        QList<QUrl> urls = event->mimeData()->urls();
        for (const QUrl &url : urls) {
            QFileInfo fileInfo(url.toLocalFile());
            QString suffix = fileInfo.suffix().toLower();
            
            // 接受文本和圖片文件
            if (suffix == "txt" || suffix == "png" || suffix == "jpg" 
                || suffix == "jpeg" || suffix == "bmp") {
                event->acceptProposedAction();
                return;
            }
        }
    }
}

void MainWindow::dragMoveEvent(QDragMoveEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        event->acceptProposedAction();
    }
}

void MainWindow::dropEvent(QDropEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        QList<QUrl> urls = event->mimeData()->urls();
        
        for (const QUrl &url : urls) {
            QString filePath = url.toLocalFile();
            handleDroppedFile(filePath);
        }
        
        event->acceptProposedAction();
    }
}

void MainWindow::handleDroppedFile(const QString &filePath)
{
    QFileInfo fileInfo(filePath);
    
    if (!fileInfo.exists()) {
        statusLabel->setText("文件不存在: " + filePath);
        return;
    }
    
    QString suffix = fileInfo.suffix().toLower();
    
    if (suffix == "txt") {
        loadTextFile(filePath);
    } else if (suffix == "png" || suffix == "jpg" || suffix == "jpeg" || suffix == "bmp") {
        loadImageFile(filePath);
    } else {
        statusLabel->setText("不支持的文件類型: " + suffix);
    }
}

void MainWindow::loadTextFile(const QString &filePath)
{
    QFile file(filePath);
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        statusLabel->setText("無法打開文件: " + filePath);
        return;
    }
    
    QTextStream in(&file);
    QString content = in.readAll();
    file.close();
    
    textEdit->setPlainText(content);
    statusLabel->setText("已加載文本文件: " + filePath);
}

void MainWindow::loadImageFile(const QString &filePath)
{
    QPixmap pixmap(filePath);
    if (pixmap.isNull()) {
        statusLabel->setText("無法加載圖片: " + filePath);
        return;
    }
    
    // 在文本編輯器中顯示圖片(簡單示例)
    textEdit->clear();
    textEdit->append(QString("圖片文件: %1\n尺寸: %2 x %3")
                    .arg(filePath)
                    .arg(pixmap.width())
                    .arg(pixmap.height()));
    
    statusLabel->setText("已加載圖片文件: " + filePath);
}

高級特性

1. 自定義拖拽視覺效果

void Widget::dragEnterEvent(QDragEnterEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        // 改變外觀提示用戶
        setStyleSheet("background-color: #e0e0e0; border: 2px dashed #666;");
        event->acceptProposedAction();
    }
}

void Widget::dragLeaveEvent(QDragLeaveEvent *event)
{
    // 恢復(fù)正常外觀
    setStyleSheet("");
    event->accept();
}

void Widget::dropEvent(QDropEvent *event)
{
    // 恢復(fù)正常外觀
    setStyleSheet("");
    // ... 處理文件
}

2. 多文件處理

void Widget::dropEvent(QDropEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        QStringList filePaths;
        QList<QUrl> urls = event->mimeData()->urls();
        
        for (const QUrl &url : urls) {
            filePaths.append(url.toLocalFile());
        }
        
        // 批量處理文件
        processMultipleFiles(filePaths);
        
        event->acceptProposedAction();
    }
}

注意事項

  • 權(quán)限問題:確保應(yīng)用程序有讀取拖拽文件的權(quán)限
  • 文件類型驗證:始終驗證文件類型和內(nèi)容,避免安全風(fēng)險
  • 大文件處理:對于大文件,考慮使用異步加載
  • 錯誤處理:完善的錯誤處理機(jī)制,提供用戶友好的提示

Qt 拖拽功能擴(kuò)展:程序間拖拽和控件間拖放

1. 接受其他程序的拖拽

基本文件拖拽(跨程序)

class FileDropWidget : public QWidget
{
protected:
    void dragEnterEvent(QDragEnterEvent *event) override
    {
        // 檢查是否有URLs(文件)或特定MIME類型
        if (event->mimeData()->hasUrls() || 
            event->mimeData()->hasFormat("text/plain")) {
            event->acceptProposedAction();
        }
    }

    void dropEvent(QDropEvent *event) override
    {
        const QMimeData *mimeData = event->mimeData();
        
        // 處理文件拖拽
        if (mimeData->hasUrls()) {
            QList<QUrl> urls = mimeData->urls();
            for (const QUrl &url : urls) {
                QString filePath = url.toLocalFile();
                qDebug() << "拖拽文件:" << filePath;
            }
        }
        
        // 處理文本拖拽
        if (mimeData->hasText()) {
            QString text = mimeData->text();
            qDebug() << "拖拽文本:" << text;
        }
        
        event->acceptProposedAction();
    }
};

支持多種MIME類型

void AdvancedDropWidget::dragEnterEvent(QDragEnterEvent *event)
{
    const QMimeData *mimeData = event->mimeData();
    
    // 支持的文件類型
    QStringList supportedFormats;
    supportedFormats << "text/uri-list" << "text/plain" 
                     << "text/html" << "image/png" 
                     << "application/x-color";
    
    for (const QString &format : supportedFormats) {
        if (mimeData->hasFormat(format)) {
            event->acceptProposedAction();
            return;
        }
    }
}

void AdvancedDropWidget::dropEvent(QDropEvent *event)
{
    const QMimeData *mimeData = event->mimeData();
    
    if (mimeData->hasUrls()) {
        // 處理文件
        handleFiles(mimeData->urls());
    }
    else if (mimeData->hasText()) {
        // 處理純文本
        handleText(mimeData->text());
    }
    else if (mimeData->hasHtml()) {
        // 處理HTML
        handleHtml(mimeData->html());
    }
    else if (mimeData->hasImage()) {
        // 處理圖片
        handleImage(qvariant_cast<QPixmap>(mimeData->imageData()));
    }
    else if (mimeData->hasColor()) {
        // 處理顏色
        handleColor(qvariant_cast<QColor>(mimeData->colorData()));
    }
    
    event->acceptProposedAction();
}

2. 控件之間的拖放

啟用控件拖放功能

// 設(shè)置控件可拖拽
ui->listWidget->setDragEnabled(true);
ui->listWidget->setAcceptDrops(true);
ui->listWidget->setDragDropMode(QAbstractItemView::DragDrop);

// 設(shè)置控件可接受拖放
ui->treeWidget->setAcceptDrops(true);
ui->treeWidget->setDragDropMode(QAbstractItemView::DropOnly);

自定義列表控件拖放

class DragDropListWidget : public QListWidget
{
public:
    DragDropListWidget(QWidget *parent = nullptr) : QListWidget(parent)
    {
        setDragEnabled(true);
        setAcceptDrops(true);
        setDropIndicatorShown(true);
        setDragDropMode(QAbstractItemView::InternalMove);
    }

protected:
    void dragEnterEvent(QDragEnterEvent *event) override
    {
        if (event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) {
            event->acceptProposedAction();
        }
    }

    void dragMoveEvent(QDragMoveEvent *event) override
    {
        event->acceptProposedAction();
    }

    void dropEvent(QDropEvent *event) override
    {
        if (event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) {
            QListWidget::dropEvent(event);
            event->acceptProposedAction();
            
            // 自定義處理邏輯
            handleItemsReordered();
        }
    }
};

3. 自定義拖拽數(shù)據(jù)

創(chuàng)建自定義MIME數(shù)據(jù)

class CustomMimeData : public QMimeData
{
    Q_OBJECT

public:
    void setCustomData(const QVariant &data) {
        m_customData = data;
        setData("application/x-custom-data", QByteArray());
    }
    
    QVariant customData() const { return m_customData; }
    
    QStringList formats() const override {
        return QStringList() << "application/x-custom-data";
    }
    
protected:
    QVariant retrieveData(const QString &mimeType, 
                         QVariant::Type type) const override {
        if (mimeType == "application/x-custom-data") {
            return m_customData;
        }
        return QVariant();
    }

private:
    QVariant m_customData;
};

實現(xiàn)自定義拖拽源

class DraggableLabel : public QLabel
{
public:
    DraggableLabel(const QString &text, QWidget *parent = nullptr)
        : QLabel(text, parent)
    {
        setAlignment(Qt::AlignCenter);
        setFrameStyle(QFrame::Box);
        setMinimumSize(100, 30);
    }

protected:
    void mousePressEvent(QMouseEvent *event) override
    {
        if (event->button() == Qt::LeftButton) {
            m_dragStartPosition = event->pos();
        }
        QLabel::mousePressEvent(event);
    }

    void mouseMoveEvent(QMouseEvent *event) override
    {
        if (!(event->buttons() & Qt::LeftButton)) return;
        
        if ((event->pos() - m_dragStartPosition).manhattanLength() 
            < QApplication::startDragDistance()) return;

        QDrag *drag = new QDrag(this);
        CustomMimeData *mimeData = new CustomMimeData;
        
        // 設(shè)置自定義數(shù)據(jù)
        QVariantMap customData;
        customData["text"] = text();
        customData["source"] = "DraggableLabel";
        customData["timestamp"] = QDateTime::currentDateTime();
        
        mimeData->setCustomData(customData);
        drag->setMimeData(mimeData);
        
        // 設(shè)置拖拽時的預(yù)覽圖像
        QPixmap pixmap(size());
        render(&pixmap);
        drag->setPixmap(pixmap);
        drag->setHotSpot(event->pos());
        
        // 執(zhí)行拖拽
        Qt::DropAction result = drag->exec(Qt::CopyAction | Qt::MoveAction);
        
        if (result == Qt::MoveAction) {
            // 如果是移動操作,清除源數(shù)據(jù)
            clear();
        }
    }

private:
    QPoint m_dragStartPosition;
};

接受自定義拖拽數(shù)據(jù)的目標(biāo)控件

class DropTargetWidget : public QWidget
{
public:
    DropTargetWidget(QWidget *parent = nullptr) : QWidget(parent)
    {
        setAcceptDrops(true);
        setStyleSheet("border: 2px dashed gray; background-color: white;");
    }

protected:
    void dragEnterEvent(QDragEnterEvent *event) override
    {
        if (event->mimeData()->hasFormat("application/x-custom-data")) {
            event->acceptProposedAction();
            setStyleSheet("border: 2px dashed blue; background-color: #e0e0ff;");
        }
    }

    void dragLeaveEvent(QDragLeaveEvent *event) override
    {
        setStyleSheet("border: 2px dashed gray; background-color: white;");
        event->accept();
    }

    void dropEvent(QDropEvent *event) override
    {
        if (event->mimeData()->hasFormat("application/x-custom-data")) {
            const CustomMimeData *customMimeData = 
                qobject_cast<const CustomMimeData*>(event->mimeData());
            
            if (customMimeData) {
                QVariant data = customMimeData->customData();
                if (data.canConvert<QVariantMap>()) {
                    QVariantMap customData = data.toMap();
                    handleCustomDrop(customData, event->pos());
                }
            }
            
            event->acceptProposedAction();
        }
        
        setStyleSheet("border: 2px dashed gray; background-color: white;");
    }

private:
    void handleCustomDrop(const QVariantMap &data, const QPoint &pos)
    {
        QString text = data["text"].toString();
        QString source = data["source"].toString();
        QDateTime timestamp = data["timestamp"].toDateTime();
        
        qDebug() << "接收到自定義拖拽數(shù)據(jù):";
        qDebug() << "文本:" << text;
        qDebug() << "來源:" << source;
        qDebug() << "時間:" << timestamp.toString();
        qDebug() << "位置:" << pos;
        
        // 創(chuàng)建顯示標(biāo)簽
        QLabel *label = new QLabel(text, this);
        label->setFrameStyle(QFrame::Box);
        label->move(pos);
        label->show();
        label->adjustSize();
    }
};

4. 高級拖放示例:在兩個列表間拖拽

class DragDropManager : public QObject
{
    Q_OBJECT

public:
    DragDropManager(QListWidget *sourceList, QListWidget *targetList)
    {
        // 源列表設(shè)置
        sourceList->setDragEnabled(true);
        sourceList->setSelectionMode(QAbstractItemView::SingleSelection);
        
        // 目標(biāo)列表設(shè)置
        targetList->setAcceptDrops(true);
        targetList->setDropIndicatorShown(true);
        
        // 連接信號
        connect(sourceList, &QListWidget::itemDoubleClicked, 
                this, &DragDropManager::onItemDoubleClicked);
    }

private slots:
    void onItemDoubleClicked(QListWidgetItem *item)
    {
        // 雙擊移動項目
        QListWidget *sourceList = qobject_cast<QListWidget*>(sender());
        if (sourceList && sourceList->parentWidget()) {
            // 查找目標(biāo)列表
            QListWidget *targetList = sourceList->parentWidget()
                ->findChild<QListWidget*>(QString(), Qt::FindDirectChildrenOnly);
            
            if (targetList && targetList != sourceList) {
                moveItem(sourceList, targetList, item);
            }
        }
    }

private:
    void moveItem(QListWidget *source, QListWidget *target, QListWidgetItem *item)
    {
        // 創(chuàng)建新項目
        QListWidgetItem *newItem = new QListWidgetItem(item->text());
        newItem->setData(Qt::UserRole, item->data(Qt::UserRole));
        
        // 添加到目標(biāo)列表
        target->addItem(newItem);
        
        // 從源列表刪除
        delete source->takeItem(source->row(item));
    }
};

5. 拖放操作類型控制

void CustomWidget::dragEnterEvent(QDragEnterEvent *event)
{
    if (event->mimeData()->hasFormat("application/x-custom-data")) {
        // 根據(jù)條件決定接受的操作類型
        if (event->keyboardModifiers() & Qt::ControlModifier) {
            event->setDropAction(Qt::CopyAction);
        } else {
            event->setDropAction(Qt::MoveAction);
        }
        event->accept();
    }
}

void CustomWidget::dropEvent(QDropEvent *event)
{
    if (event->mimeData()->hasFormat("application/x-custom-data")) {
        // 根據(jù)拖拽時的修飾鍵決定最終操作
        if (event->keyboardModifiers() & Qt::ControlModifier) {
            event->setDropAction(Qt::CopyAction);
            handleCopyOperation(event);
        } else {
            event->setDropAction(Qt::MoveAction);
            handleMoveOperation(event);
        }
        event->accept();
    }
}

6. 完整的應(yīng)用程序示例

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow()
    {
        setupUI();
        setupDragDrop();
    }

private:
    void setupUI()
    {
        // 創(chuàng)建源列表
        sourceList = new QListWidget;
        sourceList->addItems({"項目1", "項目2", "項目3", "項目4"});
        
        // 創(chuàng)建目標(biāo)區(qū)域
        dropArea = new DropTargetWidget;
        
        // 布局
        QHBoxLayout *layout = new QHBoxLayout;
        layout->addWidget(sourceList);
        layout->addWidget(dropArea);
        
        QWidget *centralWidget = new QWidget;
        centralWidget->setLayout(layout);
        setCentralWidget(centralWidget);
    }
    
    void setupDragDrop()
    {
        // 源列表啟用拖拽
        sourceList->setDragEnabled(true);
        
        // 可以添加自定義拖拽邏輯
        sourceList->setContextMenuPolicy(Qt::CustomContextMenu);
        connect(sourceList, &QListWidget::customContextMenuRequested,
                this, &MainWindow::onSourceListContextMenu);
    }

private slots:
    void onSourceListContextMenu(const QPoint &pos)
    {
        QMenu menu;
        QAction *dragAction = menu.addAction("開始拖拽");
        
        if (menu.exec(sourceList->mapToGlobal(pos)) == dragAction) {
            startCustomDrag(sourceList->itemAt(pos));
        }
    }
    
    void startCustomDrag(QListWidgetItem *item)
    {
        if (!item) return;
        
        QDrag *drag = new QDrag(sourceList);
        CustomMimeData *mimeData = new CustomMimeData;
        
        QVariantMap data;
        data["type"] = "list_item";
        data["content"] = item->text();
        data["source"] = "source_list";
        
        mimeData->setCustomData(data);
        drag->setMimeData(mimeData);
        
        // 執(zhí)行拖拽
        drag->exec(Qt::CopyAction | Qt::MoveAction);
    }

private:
    QListWidget *sourceList;
    DropTargetWidget *dropArea;
};

關(guān)鍵要點

  • MIME類型:跨程序拖拽依賴標(biāo)準(zhǔn)的MIME類型
  • 數(shù)據(jù)序列化:自定義數(shù)據(jù)需要正確序列化
  • 視覺反饋:提供清晰的拖拽視覺反饋
  • 操作控制:支持Copy、Move、Link等不同操作類型
  • 錯誤處理:處理不兼容的拖拽數(shù)據(jù)

這種實現(xiàn)方式支持復(fù)雜的拖拽場景,包括程序間數(shù)據(jù)交換和控件間的靈活交互。

總結(jié)

拖放是在應(yīng)用程序之間傳遞數(shù)據(jù)的有力機(jī)制。但是在某些情況下; 有可能在執(zhí)行拖放時并未使用Qt的拖放工具。如果只是想在一個應(yīng)用程序的窗口部件中移動數(shù)據(jù),通常只要重新實現(xiàn)mousePressEvent()和 mouseReleaseEvent()函數(shù)就可以了。

以上就是Qt實現(xiàn)文件拖拽打開加載的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Qt文件拖拽的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言實現(xiàn)統(tǒng)計一行字符串的單詞個數(shù)

    C語言實現(xiàn)統(tǒng)計一行字符串的單詞個數(shù)

    這篇文章主要介紹了C語言實現(xiàn)統(tǒng)計一行字符串的單詞個數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++利用隨機(jī)策略實現(xiàn)優(yōu)化二叉樹操作效率

    C++利用隨機(jī)策略實現(xiàn)優(yōu)化二叉樹操作效率

    這篇文章中我們主要來詳細(xì)探討隨機(jī)化二叉搜索樹的基本思想、實現(xiàn)方法,以及如何在C++中應(yīng)用這些策略來優(yōu)化我們的數(shù)據(jù)結(jié)構(gòu),感興趣的可以了解下
    2024-02-02
  • C++?STL?iota?和?atoi?用法示例詳解

    C++?STL?iota?和?atoi?用法示例詳解

    atoi是一個C/C++標(biāo)準(zhǔn)庫中的函數(shù),用于將一個以ASCII字符串表示的整數(shù)轉(zhuǎn)換為整數(shù)類型,這篇文章主要介紹了C++?STL?iota?和?atoi?用法,需要的朋友可以參考下
    2024-08-08
  • 基于C++實現(xiàn)信息管理系統(tǒng)

    基于C++實現(xiàn)信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于C++實現(xiàn)信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 解析C++中四種強(qiáng)制類型轉(zhuǎn)換的區(qū)別詳解

    解析C++中四種強(qiáng)制類型轉(zhuǎn)換的區(qū)別詳解

    本篇文章是對C++中四種強(qiáng)制類型轉(zhuǎn)換的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言實現(xiàn)學(xué)籍信息管理系統(tǒng)

    C語言實現(xiàn)學(xué)籍信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)學(xué)籍信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C語言函數(shù)的參數(shù)使用指針

    C語言函數(shù)的參數(shù)使用指針

    這篇文章主要介紹了C語言函數(shù)的參數(shù)使用指針,本文講述了指針在作為函數(shù)參數(shù)時候的使用方法,解析值傳遞和值引用的區(qū)別案例,希望對你有所幫助
    2021-06-06
  • C語言深入淺出分析函數(shù)指針

    C語言深入淺出分析函數(shù)指針

    函數(shù)指針是一個指針變量,它可以存儲函數(shù)的地址,然后使用函數(shù)指針,下面這篇文章主要給大家介紹了關(guān)于C語言進(jìn)階教程之函數(shù)指針的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Qt中實現(xiàn)多線程導(dǎo)出數(shù)據(jù)功能的四種方式小結(jié)

    Qt中實現(xiàn)多線程導(dǎo)出數(shù)據(jù)功能的四種方式小結(jié)

    在以往的項目開發(fā)中,在很多地方用到了多線程,本文將記錄下在Qt開發(fā)中用到的多線程技術(shù)實現(xiàn)方法,以導(dǎo)出指定范圍的數(shù)字到txt文件為例,展示多線程不同的實現(xiàn)方式
    2025-08-08
  • C++中mutable與volatile的深入理解

    C++中mutable與volatile的深入理解

    這篇文章主要給的阿加介紹了關(guān)于C++中mutable與volatile的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11

最新評論

邵武市| 修武县| 高雄县| 嵩明县| 聂荣县| 黄平县| 武隆县| 垫江县| 驻马店市| 峨眉山市| 屏山县| 石门县| 南乐县| 青浦区| 隆化县| 广河县| 安顺市| 丰顺县| 保康县| 长垣县| 保定市| 达州市| 东台市| 洛南县| 濉溪县| 武威市| 洛隆县| 扎兰屯市| 镇康县| 太谷县| 台北县| 宜丰县| 师宗县| 澎湖县| 灌南县| 武隆县| 阿勒泰市| 安庆市| 益阳市| 工布江达县| 三河市|