Qt拖拽图片或文件显示路径

该代码段展示了在Qt环境下,如何处理UI中的textEdit部件,使其在主窗口中成为焦点。当按下Ctrl+G时,textEdit变为中心部件。同时,实现了拖放功能,允许用户拖入URL或.txt文件。如果拖入的是.png图片文件,它会被插入到textEdit中;如果是.txt文件,其内容将被读取并显示在textEdit里。
摘要由CSDN通过智能技术生成

重写

ui界面中添加textEdit部件,点击主窗口,Ctrl + G使textEdit为中心部件

protected:
    //拖拽进入事件
    void dragEnterEvent(QDragEnterEvent *event);
    //放开事件
    void dropEvent(QDropEvent *event);

void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
    if(event->mimeData()->hasUrls())//事件中是否包含Url
        event->acceptProposedAction();
    else
        event->ignore();
}

void MainWindow::dropEvent(QDropEvent *event)
{
    //拖拽数据类型为MIME类型
    const QMimeData *mimeData = event->mimeData();
    if(mimeData->hasUrls()){
        QList<QUrl> urlList = mimeData->urls();
        //列表中第一条目转化为本地文件路径
        QString fileName = urlList.at(0).toLocalFile();
        if(!fileName.isEmpty()){
            if(fileName.right(4) == ".png"){
                QTextImageFormat format;//文本图片格式
                format.setName(fileName);//设置图片路径
                ui->textEdit->textCursor().insertImage(format);
                return;
            }
            QFile file(fileName);
            if(!file.open(QIODevice::ReadOnly)) return;
            QTextStream in(&file);

            in.setCodec("UTF-8");
            ui->textEdit->setText(in.readAll());
            file.close();
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值