zoukankan      html  css  js  c++  java
  • QT::拖放事件

    Drag拖操作 Drop放操作
    将文件拖进TextEdit中,TextEdit自动打开文件读取内容到TextEdit中。
    1、数据拖动时会被存储在MIME(Multipurpose internet Mail Extensions)中。
    2、在QT中使用QMimeData来表示MIME数据,并使用QDraw来完成数据的转换,
    3、而拖放操作都在鼠标事件中完成。
    MIME型处理函数
    测试函数:
    hasText()
    hasHtml()
    hasUrls()
    hasImage()
    hasColor()
    获取函数:
    text()
    html()
    urls()
    imageData()
    colordata()
    设置函数:       MIME类型:
    settext()       text/plain
    sethtml()       text/html
    seturls()       text/url-list
    setimageData()  image/*
    setcolordata()  application /x-color
    1、鼠标拖入一个数据进入主窗口时,会触发dragEnterEvent处理事件。获取MIME数据。
    2、查看是否有url路径(拖入文本文件实质是拖入它的路径)。
    3、当松开左键时,数据放入主窗口时,会触发dropEvent事件。
    4、获取MIME里的列表,拖入只有一个文件,所以获取列表中的第一个条目。并使用toLocalFile()转换为本地路径。
    5、使用QFile和QTextStream将文件中的数据读入编辑器中。
    void MainWindow::dragEnterEvent(QDragEnterEvent *e)
    {
        if(e->mimeData()->hasUrls())//数据是否包含URL。
            e->acceptProposedAction();//如果是则接收动作。
        else
            e->ignore();//如果不是则忽略。
    
    }
    void MainWindow::dropEvent(QDropEvent *e)
    {
        const QMimeData *mimi = e->mimeData();//获取mime数据。
        if(mimi->hasUrls())                  //如果数据包中url
        {
            QList<QUrl>urlList = mimi->urls();//获取URL列表
    
            QString fileName = urlList.at(0).toLocalFile();
            if(!fileName.isEmpty())
            {
                QFile file(fileName);            //建立QFile对象,并以只读的方式打开。
                if(file.open(QIODevice::ReadOnly))
                    return;
    
                QTextStream in(&file);           //建立文本流对象。
                ui->textEdit->setText(in.readAll());
            }
        }
    }
  • 相关阅读:
    HDU 2888 Check Corners (模板题)【二维RMQ】
    POJ 3264 Balanced Lineup(模板题)【RMQ】
    poj 3368 Frequent values(经典)【RMQ】
    SPOJ RPLN (模板题)(ST算法)【RMQ】
    UVA 796 Critical Links(模板题)(无向图求桥)
    UVA 315 Network (模板题)(无向图求割点)
    POJ 2029 Get Many Persimmon Trees (模板题)【二维树状数组】
    poj 3067 Japan 【树状数组】
    POJ 2481 Cows 【树状数组】
    POJ 1195 Mobile phones【二维树状数组】
  • 原文地址:https://www.cnblogs.com/osbreak/p/14342642.html
Copyright © 2011-2022 走看看