159 lines
5.3 KiB
C++
159 lines
5.3 KiB
C++
|
|
#include <qdir.h>
|
||
|
|
#include <qdebug.h>
|
||
|
|
#include <QHBoxLayout>
|
||
|
|
|
||
|
|
#include "leftwidget.h"
|
||
|
|
|
||
|
|
const QString sampleDataFloder = QDir::currentPath()+"/../experiment_data/sample_data";
|
||
|
|
const QString baseLineFolder = QDir::currentPath()+"/../experiment_data/base_line";
|
||
|
|
const QString analysisStateFolder = QDir::currentPath()+"/../experiment_data/analysis_state";
|
||
|
|
|
||
|
|
LeftWidget::LeftWidget()
|
||
|
|
{
|
||
|
|
// setStyleSheet("background-color: yellow;");
|
||
|
|
|
||
|
|
_treeWidget = new QTreeWidget();
|
||
|
|
_treeWidget->setHeaderHidden(true);
|
||
|
|
|
||
|
|
_analysisStateItem = new QTreeWidgetItem(_treeWidget);
|
||
|
|
_analysisStateItem->setText(0,"分析状态");
|
||
|
|
_baseLineItem = new QTreeWidgetItem(_treeWidget);
|
||
|
|
_baseLineItem->setText(0,"基线");
|
||
|
|
_sampleDataItem = new QTreeWidgetItem(_treeWidget);
|
||
|
|
_sampleDataItem->setText(0,"样品数据");
|
||
|
|
|
||
|
|
_treeWidget->setSortingEnabled(false);
|
||
|
|
// _treeWidget->insertTopLevelItem(0,_sampleDataItem);
|
||
|
|
// _treeWidget->insertTopLevelItem(1,_baseLineItem);
|
||
|
|
// _treeWidget->insertTopLevelItem(2,_analysisStateItem);
|
||
|
|
|
||
|
|
_treeWidget->addTopLevelItem(_sampleDataItem);
|
||
|
|
_treeWidget->addTopLevelItem(_baseLineItem);
|
||
|
|
_treeWidget->addTopLevelItem(_analysisStateItem);
|
||
|
|
|
||
|
|
|
||
|
|
#if 0
|
||
|
|
qDebug()<<"current path:"<<QDir::currentPath();
|
||
|
|
QString folderPath = QDir::currentPath()+"/../experiment_data";
|
||
|
|
qDebug()<<"experit dir:"<<folderPath;
|
||
|
|
|
||
|
|
QDir dir(folderPath);
|
||
|
|
|
||
|
|
qDebug()<<"folderPath exist:"<< dir.exists();
|
||
|
|
#endif
|
||
|
|
|
||
|
|
//init file name.
|
||
|
|
initFileName(_sampleDataItem,sampleDataFloder);
|
||
|
|
initFileName(_baseLineItem,baseLineFolder);
|
||
|
|
initFileName(_analysisStateItem,analysisStateFolder);
|
||
|
|
|
||
|
|
expandAll(_sampleDataItem);
|
||
|
|
expandAll(_baseLineItem);
|
||
|
|
expandAll(_analysisStateItem);
|
||
|
|
|
||
|
|
setWidget(_treeWidget);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void LeftWidget::initData()
|
||
|
|
{
|
||
|
|
const QString folderPath = QDir::currentPath()+"/../experiment_data";
|
||
|
|
#if 1
|
||
|
|
QDir dir(folderPath);
|
||
|
|
if (!dir.exists()) {
|
||
|
|
qWarning() << "文件夹不存在: " << folderPath;
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 遍历文件
|
||
|
|
QFileInfoList fileList = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot);
|
||
|
|
for (const QFileInfo& fileInfo : fileList) {
|
||
|
|
QFile file(fileInfo.absoluteFilePath());
|
||
|
|
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||
|
|
QString content = file.readAll();
|
||
|
|
qDebug() << "读取文件 " << fileInfo.absoluteFilePath() << " 内容: " << content;
|
||
|
|
file.close();
|
||
|
|
|
||
|
|
// 写入文件操作示例:这里简单在文件末尾追加一行内容
|
||
|
|
if (file.open(QIODevice::Append | QIODevice::Text)) {
|
||
|
|
file.write("\n这是通过递归写入添加的内容");
|
||
|
|
qDebug() << "已向文件 " << fileInfo.absoluteFilePath() << " 写入内容";
|
||
|
|
file.close();
|
||
|
|
} else {
|
||
|
|
qWarning() << "无法打开文件进行写入: " << fileInfo.absoluteFilePath();
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
qWarning() << "无法打开文件进行读取: " << fileInfo.absoluteFilePath();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void LeftWidget::initFileName(QTreeWidgetItem* parentItem,const QString &folderPath)
|
||
|
|
{
|
||
|
|
QDir dir(folderPath);
|
||
|
|
QStringList files = dir.entryList(QDir::Files);
|
||
|
|
for(const QString &fileName:files){
|
||
|
|
QTreeWidgetItem *subItem = new QTreeWidgetItem();
|
||
|
|
subItem->setText(0,fileName);
|
||
|
|
// _sampleDataItem->addChild(new QTreeWidgetItem(0,fileName));
|
||
|
|
parentItem->addChild(subItem);
|
||
|
|
}
|
||
|
|
|
||
|
|
#if 0
|
||
|
|
// 获取文件夹中的所有文件名
|
||
|
|
QStringList files = dir.entryList(QDir::Files); // 只列出文件
|
||
|
|
qDebug() << "Files in the current directory:";
|
||
|
|
foreach (const QString &fileName, files)
|
||
|
|
{
|
||
|
|
qDebug() << fileName;
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
void LeftWidget::expandAll(QTreeWidgetItem* item) {
|
||
|
|
item->setExpanded(true);
|
||
|
|
for (int i = 0; i < item->childCount(); ++i) {
|
||
|
|
expandAll(item->child(i));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#if 0
|
||
|
|
void LeftWidget::recursiveFolderOperation(const QString& folderPath) {
|
||
|
|
QDir dir(folderPath);
|
||
|
|
if (!dir.exists()) {
|
||
|
|
qWarning() << "文件夹不存在: " << folderPath;
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 遍历文件
|
||
|
|
QFileInfoList fileList = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot);
|
||
|
|
for (const QFileInfo& fileInfo : fileList) {
|
||
|
|
QFile file(fileInfo.absoluteFilePath());
|
||
|
|
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||
|
|
QString content = file.readAll();
|
||
|
|
qDebug() << "读取文件 " << fileInfo.absoluteFilePath() << " 内容: " << content;
|
||
|
|
file.close();
|
||
|
|
|
||
|
|
// 写入文件操作示例:这里简单在文件末尾追加一行内容
|
||
|
|
if (file.open(QIODevice::Append | QIODevice::Text)) {
|
||
|
|
file.write("\n这是通过递归写入添加的内容");
|
||
|
|
qDebug() << "已向文件 " << fileInfo.absoluteFilePath() << " 写入内容";
|
||
|
|
file.close();
|
||
|
|
} else {
|
||
|
|
qWarning() << "无法打开文件进行写入: " << fileInfo.absoluteFilePath();
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
qWarning() << "无法打开文件进行读取: " << fileInfo.absoluteFilePath();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 递归遍历子文件夹
|
||
|
|
QFileInfoList subDirList = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
|
||
|
|
for (const QFileInfo& subDirInfo : subDirList) {
|
||
|
|
recursiveFolderOperation(subDirInfo.absoluteFilePath());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#endif
|