以下方法分享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);
}