文件保存树形结构数据(四)

2014-11-23 21:46:34 · 作者: · 浏览: 23
m_pRightTreeView->setModel(m_pRightModel);
DataItem *pTreeData = new DataItem();
pTreeData->SetRoot(pTreeData);
pTreeData->Init();
m_pLeftModel->SetRoot(pTreeData);
//m_pRightModel->SetRoot(pTreeData);
m_pSplitter->addWidget(pLeftFrame);
m_pSplitter->addWidget(pRightFrame);
connect(m_pLeftSelectBtn,SIGNAL(clicked()),this,SLOT(leftSelectBtnSlot()));
connect(m_pRightSelectBtn,SIGNAL(clicked()),this,SLOT(rightSelectBtnSlot()));
connect(m_pLeftSaveBtn,SIGNAL(clicked()),this,SLOT(saveBtnSlot()));
connect(m_pRightLoadBtn,SIGNAL(clicked()),this,SLOT(loadBtnSlot()));
this->setFixedSize(QSize(650,250));
}
MainWidget::~MainWidget()
{
}
void MainWidget::leftSelectBtnSlot() //这里只是选择了一个文件夹路径,在保存之前还需要加文件名
{
QFileDialog Dialog(this,tr("选择目录"),"","");
Dialog.setFileMode(QFileDialog::Directory);
//Dialog.setNameFilter("*.data");
if (Dialog.exec())
{
QStringList dirs = Dialog.selectedFiles();
if (dirs.size() > 0)
{
m_pLeftLEdit->setText(QDir::toNativeSeparators(dirs.at(0)));
}
}
}
void MainWidget::rightSelectBtnSlot() //选择之前保存的.data文件进行加载显示
{
QFileDialog Dialog(this,tr("选择文件"),"","");
Dialog.setFileMode(QFileDialog::ExistingFile);
Dialog.setNameFilter("*.data");
if (Dialog.exec())
{
QStringList files = Dialog.selectedFiles();
if (files.size() > 0)
{
m_pRightLEdit->setText(QDir::toNativeSeparators(files.at(0)));
}
}
}
void MainWidget::saveBtnSlot()
{
[cpp]
QString filePath = m_pLeftLEdit->text();
if ((filePath.isEmpty()) || filePath.endsWith("\\") || filePath.endsWith("/")) //必须得添加文件名,文件名规定后缀为.data
{
QMessageBox::information(this,tr("提示"),tr("请输入文件名"),QMessageBox::Ok);
return;
}
else if(filePath.endsWith("data"))
{
QFile file(filePath);
if (file.open(QIODevice::WriteOnly))
{
QDataStream outStream(&file);
m_pLeftModel->SaveData(outStream);
}
}
}
void MainWidget::loadBtnSlot()
{
QString filePath = m_pRightLEdit->text();
if((!filePath.isEmpty()) &&filePath.endsWith("data"))
{
DataItem *pTreeData = new DataItem();
//pTreeData->SetRoot(pTreeData);
m_pRightModel->SetRoot(pTreeData);
QFile file(filePath);
if (file.open(QIODevice::ReadOnly))
{
QDataStream inStream(&file);
m_pRightModel->LoadData(inStream);
m_pRightTreeView->setModel(m_pRightModel);
m_pRightTreeView->reset(); //必须的,不然不会刷新
}
}
}