更改 Qt 中的主窗口标题

Posted

技术标签:

【中文标题】更改 Qt 中的主窗口标题【英文标题】:Change main window title in Qt 【发布时间】:2015-10-22 01:24:21 【问题描述】:

我正在使用 Qt C++ 制作文本编辑器,当我打开一个 txt 文件时,我想将标题更改为打开的文件的名称,我知道 setWindowTitle("title go here")。我只能显示路径。这是打开新文档的函数的一部分。

QString fileName = QFileDialog::getOpenFileName(
            this,
            "TextEditor - Open" ,
            "C:\\",
            " Text File(*.txt);;All files (*.*)");

QFile file1(fileName);
    if((!fileName.isEmpty()))
     
     currentFile = fileName;
     file1.open(QIODevice::ReadOnly|QIODevice::Text);
     QTextStream in(&file1);
     QString str1 = in.readAll();
     ui->plainTextEdit-> setPlainText(str1);
     file1.close();
     statusBar()-> showMessage(" File successfully loaded! ");
     saveRecent(currentFile);
     

    setWindowTitle(currentFile);

【问题讨论】:

【参考方案1】:

我格式化了您的代码并添加了显示正确文件名所需的代码,包括扩展名和不包括路径。

QString fileName = QFileDialog::getOpenFileName(
            this,
            "TextEditor - Open" ,
            "C:\\",
            " Text File(*.txt);;All files (*.*)");

QFile file1(fileName);
if(!fileName.isEmpty())

     currentFile = fileName;

     file1.open(QIODevice::ReadOnly|QIODevice::Text);
     QTextStream in(&file1);
     QString str1 = in.readAll();
     ui->plainTextEdit-> setPlainText(str1);
     file1.close();

     statusBar()-> showMessage(" File successfully loaded! ");
     saveRecent(currentFile);
 
 // Create the FileInfo 
 QFileInfo file1Info(file1);

 // now get the fileName
 QString file1Name(file1Info.fileName());

 // Set the Title to the fileName
 setWindowTitle(file1Name);

另见QFileInfo.fileName()的文档。

【讨论】:

【参考方案2】:
QFileInfo fileInfo(file1);
QString filename(fileInfo.fileName());

【讨论】:

作为一个简短的说明:您的答案是 100% 正确并解决了问题。我使用与您相同的解决方案发布了自己的答案,因为我不喜欢只有代码的答案,甚至没有文档链接,这不是我的风格。不过,我给了你一个 +1,因为从技术上讲,你的答案是正确的。 @Mailerdaimon 是的,这就是我删除评论的原因。

以上是关于更改 Qt 中的主窗口标题的主要内容,如果未能解决你的问题,请参考以下文章

Qt中的主窗口之菜单栏

Qt 从我的主窗口创建新窗口

模型对话框移动到主窗口后面的 Qt 错误

Qt中的弹出窗口

如何在 Qt Creator 的主窗口中添加自定义小部件

如何杀死并重新运行qt中的主进程?