文章目录
1 文本编辑器实现拖放功能
文本编辑器中的拖放操作:

解决方案:
- 调用主窗口对象的setAcceptDrops成员函数。
- 重写dragEnterEvent函数并判断MIME类型。
- 重写dropEvent函数判断MIME类型后打开文件。
实现的关键代码如下:
MainWindow::MainWindow()
{
setWindowTitle("NotePad - [ New ]");
setAcceptDrops(true);
m_filePath = "";
m_isTextChanged = false;
}
void MainWindow::dragEnterEvent(QDragEnterEvent* e)
{
if( e->mimeData()->hasUrls() )
{
e->acceptProposedAction();
}
else
{
e->ignore();
}
}
void MainWindow::dropEvent(QDropEvent* e)
{
if( e->mimeData()->hasUrls() )
{
QList<QUrl> list = e->mimeData()->urls();
QString path = list[0].toLocalFile();
QFileInfo fi(path);
if( fi.isFile() )
{
preEditorChange();
if( !m_isTextChanged )
{
openFileToEditor(path);
}
}
else
{
showErrorMessage("Cannot open a folder!");
}
}
else
{
e->ignore();
}
}
参考资料:
1297

被折叠的 条评论
为什么被折叠?



