【发布时间】:2016-02-25 15:36:26
【问题描述】:
这是我的代码:
void MainWindow::save(){
QString fileName = QFileDialog::getSaveFileName(this, tr("Save Text File"), path, tr("Text Files (*.txt)"));
if (fileName != "")
{
QFileInfo info(fileName);
path = info.absoluteDir().absolutePath();
QFile file(path);
if(!file.open(QIODevice::WriteOnly)){
QString text = ui->plainTextEdit->toPlainText();
QTextStream out(&file);
out << text ;
file.close();
}
}
}
但点击按钮后它不会创建任何 .txt 文件:
connect(ui->saveButton, SIGNAL(clicked(bool)), this, SLOT(save()));
日志:
QIODevice::write (QFile, "C:\Users\kfg\Desktop"): device not open
感谢您的帮助:)
【问题讨论】:
-
if(!file.open(QIODevice::WriteOnly)){确定要在open失败时写入文件吗? -
转到 `C:\Users` 并检查您当前的用户帐户和管理员组是否具有对 kfg 的配置文件文件夹的完全访问权限。见文章:answers.microsoft.com/en-us/windows/forum/windows_7-files/…
-
比@SimonKraemer 的评论更明确(这样我就可以投票关闭它作为一个无法再复制的错字):您的错误检查被颠倒了。正如所写的那样,您仅在打开失败时才尝试写入,如果打开成功则不要尝试写入。
-
@VladimirBershov 他没有必要这样做。仔细阅读他的代码,注意他的错误检查反转。
标签: c++ qt qfile qfiledialog qtextstream