QFileDialog::getOpenFileName返回全路径,如何仅获取文件名?
Qt Widgets 从文件完整路径提取文件名的实现方法
你可以通过Qt内置的QFileInfo文件信息类直接从全路径中提取纯文件名,该类自动适配不同操作系统的路径分隔符规则,不需要手动处理字符串分割,是最稳妥的实现方案。
示例代码
#include <QFileDialog> #include <QFileInfo> // ... 其他项目所需头文件 // 打开文件的业务逻辑 void YourMainWindow::openFile() { // 调用原生文件选择对话框获取选中文件的完整路径 QString fullFilePath = QFileDialog::getOpenFileName( this, tr("选择要打开的文件"), QDir::homePath(), tr("文本文件(*.txt *.md *.cpp *.h);;所有文件(*.*)") ); // 过滤用户点击取消的情况 if (fullFilePath.isEmpty()) { return; } // 构造QFileInfo实例提取文件名 QFileInfo fileInfo(fullFilePath); // fileName()方法返回带后缀的纯文件名,如「README.md」,完全符合标签页标题需求 QString tabTitle = fileInfo.fileName(); // 接下来按你的业务逻辑设置标签页标题即可,示例为QTabWidget的调用方式 // 这里替换为你自己的文本编辑器控件和QTabWidget实例 int newTabIndex = m_tabWidget->addTab(new YourTextEditor(fullFilePath), tabTitle); m_tabWidget->setCurrentIndex(newTabIndex); }
补充说明
- 如果需要不带后缀的文件名,把
fileInfo.fileName()替换为fileInfo.baseName()即可 - 不推荐手动切割字符串提取文件名,不同操作系统的路径分隔符存在差异(Windows为
\、Linux/macOS为/),手动处理容易出现跨平台兼容问题
内容的提问来源于stack exchange,提问作者Fady's Cube
相关产品推荐
相关产品推荐

