我目前开始开发QT桌面应用程序,以编辑脚本语言“ Lua”。该实现应该是非常基本的,打开Lua扩展文件,保存并编辑它们。我偶然发现的问题是我只希望能够打开/保存/编辑Lua文件。在阅读QT文档时,我偶然发现了如何为所谓的“记事本”编辑器打开文件的解释。他们提供了以下示例代码:
QString fileName = QFileDialog::getOpenFileName(this, "Open the file");
QFile file(fileName);
currentFile = fileName;
if (!file.open(QIODevice::ReadOnly | QFile::Text)) {
QMessageBox::warning(this, "Warning", "Cannot open file: " + file.errorString());
return;
}
setWindowTitle(fileName);
QTextStream in(&file);
QString text = in.readAll();
ui->textEdit->setText(text);
file.close();
if (!file.open(QIODevice::ReadOnly | QFile::Text))
中),但是他们没有指定如果我只希望能够打开某些类型的条件,则该外观应该是什么样的文件(在我的情况下是lua文件)。它们显示的“保存”选项也是如此。所以我的问题是,应如何扩展此条件,以检查文件是否具有给定的Lua扩展名?提前致谢。[getOpenFileName
可以接受更多参数,请参阅文档here。
所以您的代码将类似于:
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"", //default path here
tr("Lua files (*.lua)"));
您可以尝试以下操作:QFileDialog :: setNameFilter(const QString&filter)
将文件对话框中使用的过滤器设置为给定的过滤器。
/* If filter contains a pair of parentheses containing one or more filename-wildcard patterns, separated by spaces, then only the text contained in the parentheses is used as the filter. This means that these calls are all equivalent: */
dialog.setNameFilter("All C++ files (*.cpp *.cc *.C *.cxx *.c++)");
dialog.setNameFilter("*.cpp *.cc *.C *.cxx *.c++");