QFile错误:设备未打开。

3

我有一段代码:

int actualSize = 8;
QFile tableFile("C:\\Users\\Ms\\Documents\\L3\\table"+QString::number(actualSize)+".txt");
QTextStream in(&tableFile);
QString oneLine;
oneLine.append(in.readAll());
if(tableFile.exists())
{
    messageLabel->setText(oneLine);
}else
{
    messageLabel->setText("Not open");
}

C:\Users\Ms\Documents\L3\ 文件夹中,我有一个名为 "table8.txt" 的文件。但是 messageLabel(它是一个QLabel)上会显示 "Not open" 文字,oneLine 是空的,tableFile.exists() 返回 false,同时我收到了 "device not open" 警告/错误。

我尝试使用相对路径,例如

QFile tableFile("table"+QString::number(actualSize)+".txt");

但是我想到的所有方法都不太好。

1
open 方法的调用在哪里? - Marek R
tableFile.open(QIODevice::ReadOnly | QIODevice::Text); 我添加了这行代码,它起作用了,谢谢。 - Miklos
1个回答

2
你应该能够对所有与QFile相关的路径使用斜杠“/”作为分隔符。在读取文件之前打开它,在完成时关闭它。
int actualSize = 8;
QFile tableFile("C:/Users/Ms/Documents/L3/table"+QString::number(actualSize)+".txt");
if(tableFile.exists() && tableFile.open(QIODevice::ReadOnly | QIODevice::Text))
{
    QTextStream in(&tableFile);
    QString oneLine;
    oneLine.append(in.readAll());
    messageLabel->setText(oneLine);
    tableFile.close();
} else
{
    messageLabel->setText("Not open");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接