Qt拖动文本并直接在QTextEdit显示文本内容

本文介绍了如何使用Qt为文本编辑器添加事件过滤器,实现在拖动文本时直接在编辑器中显示。通过捕获QEvent::DragEnter和QEvent::Drop事件,解析URL并读取文件内容,实现了文本的无缝导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 以下方法分享Qt拖动文本并直接显示的简单方法

txtEdit需绑定事件过滤器

拖动文本到qtextedit直接打开
bool Widget::eventFilter(QObject *object, QEvent *event)
{
    if(object == ui->textEdit)
    {
        if(event->type() == QEvent::DragEnter)
        {
            QDragEnterEvent *drap = static_cast<QDragEnterEvent *>(event);
            if(drap->mimeData()->hasFormat("text/uri-list"))
            {
                drap->acceptProposedAction();
            }
        }
        if(event->type() == QEvent::Drop)
        {
            QDropEvent *drop = static_cast<QDropEvent *>(event);
            QList<QUrl> urls = drop->mimeData()->urls();
            if(urls.isEmpty())
            {
                return false;
            }
            QString filename = urls.first().toLocalFile();
            if(!filename.isEmpty())
            {
                QFile file(filename);
                QString content;
                if(file.open(QFile::ReadOnly | QFile::Text))
                {
                    QTextStream out(&file);
                    while(!out.atEnd())
                    {
                        content = out.readAll();
                    }
                }
                QTextEdit *txtEdit = qobject_cast<QTextEdit *>(object);
                txtEdit->setText(content);
            }
        }
        return true;
    }
    return QWidget::eventFilter(object,event);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厦门Linux嵌入式+Qt开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值