You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:00:04