void visualICDAR::open()
{QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"),
QDir::homePath(), tr("Images (*.tif)"));
if(!fileName.isEmpty())
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
pixmapWidget->setPixmap(fileName);
QString dataFileName = fileName.replace(fileName.length() - 3, 3, "csv");
QFile data(dataFileName);
if(!data.open(QIODevice::ReadOnly|QIODevice::Text))
{
QMessageBox::warning(this, "NoCSV file founs!",
QString("No %1 file was found!").arg(dataFileName));
}
QTextStream text(&data);
text.setCodec("UTF-8");
QString dataString = text.readAll();
((QStandardItemModel*)fileWidget->model())->clear();
fileWidget->AddRowsFromString(dataString);
fileWidget->setOutputFile(dataFileName);
data.close();
QApplication::restoreOverrideCursor();
}
}
class CFileWidget : public QTableView
{
Q_OBJECT
public:
CFileWidget(QWidget *parent);
~CFileWidget();
void setOutputFile(const QString fileName)
{ outputFile.setFileName(fileName);
outputFile.open(QIODevice::WriteOnly|QIODevice::Text); }
public slots:
void AddRowsFromString(const QString& text);
void DeleteSelectedRows();
void AddRow();
void SaveToFile();
signals:
void SelectRects(const QList<QRect>& rects, const QList<QRect>& parenRects);
protected slots:
void selectionChanged (const QItemSelection & selected, const QItemSelection & deselected);
private:
int addonId;
QFile outputFile;
};
void CFileWidget::SaveToFile()
{
QTextStream textStream(&outputFile);
textStream.setCodec("UTF-8");
for(int row = 0; row < ((QStandardItemModel*)model())->rowCount(); ++row)
{
int column = 0;
while(((QStandardItemModel*)model())->item(row, column))
{
textStream<<((QStandardItemModel*)model())->item(row, column)->data(Qt::DisplayRole).toString();
textStream<<"\t";
column++;
}
textStream<<"\n";
}
}
我想从文件中读取一些数据,但是当我读它的文件变空。 这是为什么发生? 如果程序中出现一些错误,它不会保存任何数据,我们会失去它? 那么如何打开文件,从中读取并保存所有数据呢? 据我了解,如果我用只写模式再次打开它,我会重写所有数据不会追加?QT从文件读取时的所有数据被删除
有关代码 第一个功能是打开的文件 第二一段代码是类存储QFile时 ,三是保存到文件功能
代码应导致文件内容会丢失。可能你是用Write选项打开同一个文件的吗?添加使用QIODevice :: Append – evilruff 2013-04-23 15:26:35
我从文件中读取后关闭它,但后来在代码中保留文件名 ,我使用只写和文本模式将数据写回。 它只是奇怪,如果我只是打开了它,代码没有达成保存到文件的功能,比我尽量减少我的程序,去探险,看看我刚打开该文件系为0的大小(但70 KB) – 2013-04-23 15:41:35
它是在读取前或后读取文件清空?如果你退出应用程序,数据完全消失了吗? – 2013-04-23 15:57:20