DSCAnalysisTool/src/ui/leftwidget.cpp

159 lines
5.3 KiB
C++
Raw Normal View History

2025-03-10 09:35:07 +00:00
#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