【发布时间】:2015-08-20 01:01:16
【问题描述】:
我是 Qt 新手,我希望能够选择一个名为 default.ini 的现有文件,该文件与 exe 位于同一目录中。我已经有一些代码允许我这样做,但用户每次都必须手动选择文件。
QString file = QFileDialog::getOpenFileName(this, tr("Open File"), "/debug", tr("default (*.ini)"));
if (file != NULL) {
try {
controller_->ConfigurationFileSave(file.toStdString());
} catch (std::exception &e) {
Logger::Log(std::string("Failed to save configuration: ") + e.what(),
Logger::kError);
}
}
程序在写入/读取文件方面做了我想做的一切,我只是不希望程序在打开文件时需要任何用户输入。我知道我有用户输入的原因是因为我正在使用 QFileDialog 类,我只想知道是否有另一个类可以自动执行它。谢谢
编辑 1 根据 Arun 的建议,我尝试使用 Qfile。该程序现在成功地从 default.ini 配置文件中读取,但它不会保存到配置文件中。有没有一种简单的方法可以写入文件?
QFile file("default.ini");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QString content = file.readAll();
file.close();
if (content != NULL) {
try {
controller_->ConfigurationFileSave(content.toStdString());
} catch (std::exception &e) {
Logger::Log(std::string("Failed to save configuration: ") + e.what(),
Logger::kError);
}
}
编辑 2 根据 Arun 的第二个建议:
QFile file("default.ini");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QString line = file.readAll();
file.close();
file.open(QIODevice::WriteOnly | QIODevice::Text);
try {
controller_->ConfigurationFileSave(line.toStdString());
} catch (std::exception &e) {
Logger::Log(std::string("Failed to save configuration: ") + e.what(),
Logger::kError);
}
file.close();
【问题讨论】:
-
如果您知道目录名,那么您可以指定文件的完整路径。
-
这不会仍然导致“打开文件”对话框出现吗?
-
当你说“不会保存到配置文件”时,到底发生了什么?你一定在
content有一些内容 -
当我使用QFileDialog类时,我在“打开文件”对话框中选择了default.ini文件,我可以读写该文件。现在,当我使用 QFile 方法时,GUI 可以识别我在 ini 文件中手动编辑的变量,但我无法像以前那样写入文件。
-
所有这些代码都在一个名为“应用”的按钮的按钮处理程序中。因此,当我编辑一些变量并单击应用时,当我使用 QFileDialog 方法时,这些变量用于保存到 ini 文件,但现在它们不保存