123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833 |
- #include "mainwindow.h"
- #include "custommodel.h"
- #include "ui_mainwindow.h"
- #include "listview_ad.h"
- #include "listview_delgate.h"
- #include <QStandardItemModel>
- #include"../sample_button_slide/CustomButton.h"
- #include"../test_drag/mylistwidget.h"
- #include <QDir>
- #include <QFile>
- #include <QTextStream>
- #include <iostream>
- #include <QMimeData>
- using namespace std;
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- //add_slide;
- QWidget *slide_2= ui->slide_2; // 获取ceshi_2_slide控件指针
- customB2 = new CustomButton(this); // 创建自定义控件实例
- connect(customB2, &CustomButton::click, this, &MainWindow::onWidgetClicked);
- // 将自定义控件添加到ceshi_2_slide控件中
- QHBoxLayout *layout2 = new QHBoxLayout(slide_2);
- layout2->setContentsMargins(0, 0, 0, 0);
- layout2->addWidget(customB2);
- layout2->setSpacing(0);
- //add_slide;
- QWidget *slide_3= ui->slide_3; // 获取ceshi_2_slide控件指针
- customB3 = new CustomButton(this); // 创建自定义控件实例
- connect(customB3, &CustomButton::click, this, &MainWindow::onWidgetClicked);
- // 将自定义控件添加到ceshi_2_slide控件中
- QHBoxLayout *layout3 = new QHBoxLayout(slide_3);
- layout3->setContentsMargins(0, 0, 0, 0);
- layout3->addWidget(customB3);
- layout3->setSpacing(0);
- //add_slide;
- QWidget *slide_4= ui->slide_4; // 获取ceshi_2_slide控件指针
- customB4 = new CustomButton(this); // 创建自定义控件实例
- connect(customB4, &CustomButton::click, this, &MainWindow::onWidgetClicked);
- // 将自定义控件添加到ceshi_2_slide控件中
- QHBoxLayout *layout4 = new QHBoxLayout(slide_4);
- layout4->setContentsMargins(0, 0, 0, 0);
- layout4->addWidget(customB4);
- layout4->setSpacing(0);
- //初始化右侧u
- // MyListWidget* my1=new MyListWidget();
- // QVBoxLayout *layout5 = new QVBoxLayout();
- // layout5->addWidget(my1);
- // ui->test_frame->setLayout(layout5);
- // connect(my1, &MyListWidget::operationCompleted, this, &MainWindow::handleOperationCompleted);
- my1=new MyListWidget();
- my1->setObjectName("listWidget");
- QVBoxLayout *layout5 = new QVBoxLayout();
- layout5->addWidget(my1);
- ui->frame->setLayout(layout5);
- qDebug()<<"widget_group"<<ui->widget_group1;
- connect(my1, &MyListWidget::operationCompleted, this, &MainWindow::handleOperationCompleted);
- connect(my1, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_listWidget_customContextMenuRequested(QPoint)));
- my2=new MyListWidget();
- my2->setObjectName("listWidget_2");
- QVBoxLayout *layout6 = new QVBoxLayout();
- layout6->addWidget(my2);
- ui->frame_4->setLayout(layout6);
- connect(my2, &MyListWidget::operationCompleted, this, &MainWindow::handleOperationCompleted);
- connect(my2, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_listWidget_customContextMenuRequested(QPoint)));
- my3=new MyListWidget();
- my3->setObjectName("listWidget_3");
- QVBoxLayout *layout7 = new QVBoxLayout();
- layout7->addWidget(my3);
- ui->frame_5->setLayout(layout7);
- connect(my3, &MyListWidget::operationCompleted, this, &MainWindow::handleOperationCompleted);
- connect(my3, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_listWidget_customContextMenuRequested(QPoint)));
- my4=new MyListWidget();
- my4->setObjectName("listWidget_4");
- QVBoxLayout *layout8 = new QVBoxLayout();
- layout8->addWidget(my4);
- ui->frame_6->setLayout(layout8);
- connect(my4, &MyListWidget::operationCompleted, this, &MainWindow::handleOperationCompleted);
- connect(my4, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(on_listWidget_customContextMenuRequested(QPoint)));
- QString folder = "/users/lal/documents/RedInterstitialData/HotUpdate2";
- root_pro_path=folder;
- qDebug()<<folder;
- QStringList qs=tool::getFilesInFolder(folder);//获取项目名称列表
- qDebug()<<qs;
- //初始化comboBox
- initComboBox(qs);
- QString currentPro = ui->comboBox->currentText();
- //初始化TreeView
- QString jsonPath = folder+"/"+currentPro+"/"+"Hotupdate.json";
- qDebug()<<jsonPath;
- QJO=tool::readJsonFile(jsonPath);
- // 从JSON对象中提取数据
- QJA = QJO.value("children").toArray();
- ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);
- connect(ui->treeView, &QTreeView::customContextMenuRequested, this, &MainWindow::slotTreeMenu);
- //初始化treeview 和 combobox
- QTreeView *treeView=ui->treeView;
- QStandardItemModel* model=new QStandardItemModel(treeView);
- model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("名称"));
- treeView->setModel(model);
- initTreeView(model->invisibleRootItem(),QJA);
- qDebug()<<"QJA"<<QJA;
- //初始化右边
- // initRight(QString parentNode,QString childNode);
- }
- void QTreeView::mousePressEvent(QMouseEvent *event)
- {
- QModelIndex index = indexAt(event->pos());
- if (index.isValid() && index.parent().isValid())
- {
- // 这是一个二级列表项,你可以在这里处理点击事件
- // 例如,获取二级列表项的数据并进行相应的操作
- QVariant data = index.data(Qt::DisplayRole);
- qDebug() << "Clicked on subitem:" << data.toString();
- }
- else
- {
- qDebug() << "Clicked on subitem false";
- QTreeView::mousePressEvent(event);
- }
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- void MainWindow::readFile(const QString& filePath)//设置打开该窗体时检查路径并加载
- {
- // 获取文件所在路径
- QString dirPath = QFileInfo(filePath).absolutePath();
- qDebug() << dirPath;
- // 创建路径
- QDir dir;
- if (!dir.mkpath(dirPath))
- {
- qDebug() << "无法创建路径:" << dirPath;
- return;
- }
- // 创建文件
- QFile file(filePath);
- if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
- {
- qDebug() << "无法创建文件:" << file.errorString();
- return;
- }
- // 使用QTextStream读取文件内容
- QTextStream in(&file);
- while (!in.atEnd())
- {
- QString line = in.readLine();
- // 处理每一行的内容
- // TODO: 添加您的逻辑
- qDebug() << line;
- }
- // 关闭文件
- file.close();
- }
- void MainWindow::on_pushButton_clicked()
- {
- dialog=new Dialog(this);
- dialog->setModal(false);
- dialog->show();
- }
- void MainWindow::on_pushButton_2_clicked()
- {
- dialog=new Dialog(this);
- dialog->setModal(false);
- dialog->show();
- }
- QJsonObject MainWindow::readJsonFile(const QString& filePath)
- {
- // 打开JSON文件
- QFile file(filePath);
- if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
- {
- qDebug() << "无法打开文件:" << file.errorString();
- return QJsonObject();
- }
- // 读取文件内容
- QByteArray jsonData = file.readAll();
- file.close();
- // 解析JSON数据
- QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData);
- if (!jsonDoc.isObject())
- {
- qDebug() << "无效的JSON文件";
- return QJsonObject();;
- }
- // 获取JSON对象
- QJsonObject jsonObj = jsonDoc.object();
- return jsonObj;
- // 处理其他字段...
- }
- void MainWindow::init()
- {
- QString filePath = "~/Documents/RedInterstitialData/Hotupdate.tool/Hotupdate1.json";
- QJA=tool::getJsanArra(filePath);
- // 从JSON对象中提取数据
- int num=QJA.count();
- qDebug() << num;
- QStringList pro_list;
- for(int i=1;i<=num;i++)
- {
- pro_list.append(QString::number(i));
- }
- ui->comboBox->clear();
- ui->comboBox->addItems(pro_list);
- ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);
- connect(ui->treeView, &QTreeView::customContextMenuRequested, this, &MainWindow::slotTreeMenu);
- //初始化当前窗口
- int index=ui->comboBox->currentData().toString().toInt();
- inittreeview(QJA[index]);
- }
- void MainWindow::init2()
- {
- // QString filePath = "~/Documents/RedInterstitialData/Hotupdate2/Hotupdate2.json";
- // QString folder = "~/Documents/RedInterstitialData/Hotupdate2";
- // tool::generateFolderJsonFile(folder,filePath);
- // QString jsonPath = "~/Documents/RedInterstitialData/Hotupdate2/Hotupdate2.json";
- // QJO=tool::readJsonFile(jsonPath);
- // // 从JSON对象中提取数据
- // QJA = QJO.value("children").toArray();
- // ui->comboBox->clear();
- // ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);
- // connect(ui->treeView, &QTreeView::customContextMenuRequested, this, &MainWindow::slotTreeMenu);
- // //初始化treeview 和 combobox
- // QTreeView *treeView=ui->treeView;
- // QStandardItemModel* model=new QStandardItemModel(treeView);
- // model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("名称"));
- // treeView->setModel(model);
- // QStringList pro_list;
- // ui->comboBox->clear();
- // pro_list=initializeTreeView_conboBox(model->invisibleRootItem(),QJA);
- // ui->comboBox->addItems(pro_list);
- }
- //初始化treeview 和combobox控件
- void MainWindow::initTreeView(QStandardItem* parentItem,const QJsonArray& jsonArray) {
- QStringList pro_list;
- for (QJsonArray::const_iterator it = jsonArray.constBegin(); it != jsonArray.constEnd(); ++it) {
- QJsonValue jsonValue = *it;
- qDebug()<<jsonValue;
- // 处理每个元素,可以根据需要进行类型检查和值提取
- if (jsonValue.isString()) {
- QString fileName = jsonValue.toString();
- QStandardItem* item = new QStandardItem(fileName);
- // if(!fileName.endsWith("json"))
- // parentItem->appendRow(item);
- // 处理字符串值 s
- } else if (jsonValue.isDouble()) {
- double doubleValue = jsonValue.toDouble();
- // 处理双精度浮点数值
- } else if (jsonValue.isObject()) {
- QJsonObject objectValue = jsonValue.toObject();
- QString name = objectValue["name"].toString();
- QStandardItem* item = new QStandardItem(name);
- parentItem->appendRow(item);
- QJsonArray childrenArray = objectValue["children"].toArray();
- pro_list.append(name);
- // 处理对象值
- initTreeView(item, childrenArray);
- }
- }
- }
- void MainWindow::inittreeview(QJsonValueRef ref)
- {
- //1,构造Model,这里示例具有3层关系的model构造过程
- QStandardItemModel* model = new QStandardItemModel(ui->treeView);
- model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("序号") << QStringLiteral("名称")); //设置列头
- for(int i=0;i<5;i++)
- {
- //一级节点,加入mModel
- QList<QStandardItem*> items1;
- QStandardItem* item1 = new QStandardItem(QString::number(i));
- QStandardItem* item2 = new QStandardItem(QStringLiteral("一级节点"));
- items1.append(item1);
- items1.append(item2);
- model->appendRow(items1);
- for(int j=0;j<5;j++)
- {
- //二级节点,加入第1个一级节点
- QList<QStandardItem*> items2;
- QStandardItem* item3 = new QStandardItem(QString::number(j));
- QStandardItem* item4 = new QStandardItem(QStringLiteral("二级节点"));
- items2.append(item3);
- items2.append(item4);
- item1->appendRow(items2);
- }
- }
- //2,给QTreeView应用model
- ui->treeView->setModel(model);
- }
- void MainWindow::on_pushButton_4_clicked()
- {
- QList<QStandardItem*> items1;
- QStandardItemModel *model1 = static_cast<QStandardItemModel*>(ui->treeView->model());
- QStandardItem* item2 = new QStandardItem(QStringLiteral("新建测试"));
- items1.append(item2);
- model1->appendRow(items1);
- }
- void MainWindow::slotTreeMenu(const QPoint &pos)
- {
- QString qss = "QMenu{color:#E8E8E8;background:#4D4D4D;margin:2px;}\
- QMenu::item{padding:3px 20px 3px 20px;}\
- QMenu::indicator{width:13px;height:13px;}\
- QMenu::item:selected{color:#E8E8E8;border:0px solid #575757;background:#1E90FF;}\
- QMenu::separator{height:1px;background:#757575;}";
- QMenu menu;
- menu.setStyleSheet(qss); //可以给菜单设置样式
- QModelIndex curIndex = ui->treeView->indexAt(pos); //当前点击的元素的index
- QModelIndex index = curIndex.sibling(curIndex.row(),0); //该行的第1列元素的index
- if (index.isValid())
- {
- //可获取元素的文本、data,进行其他判断处理
- //QStandardItem* item = mModel->itemFromIndex(index);
- //QString text = item->text();
- //QVariant data = item->data(Qt::UserRole + 1);
- //...
- //添加一行菜单,进行展开
- menu.addAction(QStringLiteral("删除"), this, SLOT(slotTreeMenuDelete(bool)));
- }
- menu.exec(QCursor::pos()); //显示菜单
- }
- void MainWindow::slotTreeMenuExpand(bool checked)
- {
- QModelIndex curIndex = ui->treeView->currentIndex();
- QModelIndex index = curIndex.sibling(curIndex.row(),0); //同一行第一列元素的index
- if(index.isValid())
- {
- ui->treeView->expand(index);
- }
- }
- void MainWindow::slotTreeMenuCollapse(bool checked)
- {
- QModelIndex curIndex = ui->treeView->currentIndex();
- QModelIndex index = curIndex.sibling(curIndex.row(),0); //同一行第一列元素的index
- if(index.isValid())
- {
- ui->treeView->collapse(index);
- }
- }
- //删除设定为假删除,在窗体退出的时候才更新json文件,并执行删除操作
- /////////到这里
- /// ///
- /// ////
- /// ///
- /// //
- /// //
- /// /
- ///
- /// //
- void MainWindow::slotTreeMenuDelete(bool checked)
- {
- QModelIndex curIndex = ui->treeView->currentIndex();
- QModelIndex index = curIndex.sibling(curIndex.row(),0); //同一行第一列元素的index
- qDebug()<<curIndex;
- qDebug()<<index;
- }
- void MainWindow::initComboBox(QStringList qs){
- ui->comboBox->clear();
- ui->comboBox->addItems(qs);
- }
- void MainWindow::initRight(QString parentNode,QString childNode){
- //
- QString folder = "/users/lal/documents/RedInterstitialData/HotUpdate2";
- QString currentPro = ui->comboBox->currentText();
- config_json_path=folder+"/"+currentPro+"/"+parentNode+"/"+childNode+"/config.json";
- treeview_path=folder+"/"+currentPro+"/"+parentNode+"/"+childNode;
- qDebug()<<config_json_path;
- qDebug()<<treeview_path;
- RQJA=tool::getJsanArra(config_json_path);
- for (int i = 0; i < RQJA.size(); ++i) {
- QJsonValueRef value = RQJA[i];
- QJsonObject jsonObject = value.toObject();
- QJsonValue jsonArrayValue = jsonObject.value("children");
- QJsonValue Used=jsonObject.value("selected");
- QString used=Used.toString();
- QJsonArray jsonArray = jsonArrayValue.toArray();
- qDebug()<<jsonArray.size();
- CustomButton* temb=nullptr;
- QListWidget* rightLw;
- if(i==0)
- {
- rightLw=my1;
- }
- else if(i==1)
- {
- temb=customB2;
- rightLw=my2;
- }
- else if(i==2)
- {
- temb=customB3;
- rightLw=my3;
- }
- else{
- temb=customB4;
- rightLw=my4;
- }
- if(used=="1"&&temb)
- {
- if(temb->dir==Qt::AlignLeft){
- temb->pos_right_button();
- }
- }
- if(used=="0"&&temb)
- {
- if(temb->dir==Qt::AlignRight){
- temb->pos_left_button();
- }
- }
- initRightListwidget(rightLw,jsonArray);
- }
- }
- void MainWindow::on_treeView_clicked(const QModelIndex &index)
- {
- // 获取第一级节点的信息
- if(index.parent().isValid())
- {
- QModelIndex parentIndex = index.parent();
- QString parentData = parentIndex.data().toString();
- qDebug() << "First-level Node: " << parentData;
- // 获取第二级节点的信息
- QString childData = index.data().toString();
- qDebug() << "Second-level Node: " << childData;
- initRight(parentData,childData);
- }
- }
- void MainWindow::initRightListwidget(QListWidget* qw,const QJsonArray& qja)
- {
- QStringList dataList;
- for (const QJsonValue& value : qja) {
- if (value.isString()) {
- QString stringValue = value.toString();
- dataList.append(stringValue);
- }
- }
- qDebug()<<"initRightListwidget";
- qDebug()<<"dataList"<<dataList;
- qDebug()<<"qw"<<qw;
- qw->clear();
- qw->addItems(dataList);
- }
- /////////////////////////////////////////////////////////////////////////////////////////////右侧右击事件
- void MainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos)
- {
- qDebug()<<"1111111";
- QListWidgetItem* curItem = my1->itemAt( pos );
- if( curItem == NULL )
- return;
- QMenu *popMenu = new QMenu( this );
- QAction *deleteSeed = new QAction(tr("Delete"), this);
- QString qss = "QMenu{color:#E8E8E8;background:#4D4D4D;margin:2px;}\
- QMenu::item{padding:3px 20px 3px 20px;}\
- QMenu::indicator{width:13px;height:13px;}\
- QMenu::item:selected{color:#E8E8E8;border:0px solid #575757;background:#1E90FF;}\
- QMenu::separator{height:1px;background:#757575;}";
- popMenu->setStyleSheet(qss);
- popMenu->addAction( deleteSeed );
- this->qlw=my1;
- connect( deleteSeed, SIGNAL(triggered() ), this, SLOT( deleteSeedSlot()) );
- popMenu->exec( QCursor::pos() );
- delete popMenu;
- delete deleteSeed;
- }
- void MainWindow::on_listWidget_2_customContextMenuRequested(const QPoint &pos)
- {
- QListWidgetItem* curItem = my2->itemAt( pos );
- if( curItem == NULL )
- return;
- QMenu *popMenu = new QMenu( this );
- QAction *deleteSeed = new QAction(tr("Delete"), this);
- popMenu->addAction( deleteSeed );
- this->qlw=my2;
- connect( deleteSeed, SIGNAL(triggered() ), this, SLOT( deleteSeedSlot()));
- popMenu->exec( QCursor::pos() );
- delete popMenu;
- delete deleteSeed;
- }
- /////daozheer 可以删除项 还没有修改json文件
- void MainWindow::deleteSeedSlot()
- {
- qDebug()<<"deleteSeedSlot";
- QListWidgetItem * item = this->qlw->currentItem();
- qDebug()<<this->qlw;
- if( item == NULL )
- return;
- int curIndex = this->qlw->row(item);
- qDebug()<<curIndex;
- auto curItem=this->qlw->takeItem(curIndex);
- qDebug()<<curItem->text();
- // updateConfig(ui->listWidget);//更新对应的config.json文件
- QString deal_file_path;
- QString group_name;
- int group_index;
- if(qlw->objectName()=="listWidget")
- {
- group_name="group1";
- group_index=0;
- }
- else if(qlw->objectName()=="listWidget_2")
- {
- group_name="group2";
- group_index=1;
- }
- else if(qlw->objectName()=="listWidget_3")
- {
- group_name="group3";
- group_index=2;
- }
- else
- {
- group_name="group4";
- group_index=3;
- }
- deal_file_path=treeview_path+"/"+group_name+"/"+curItem->text();
- QFile file(deal_file_path);
- file.remove();
- QJsonObject groupObject = RQJA[group_index].toObject();
- QJsonArray childrenArray = groupObject["children"].toArray();
- childrenArray.removeAt(curIndex);
- groupObject["children"] = childrenArray;
- RQJA[group_index] = groupObject;
- writeBackToConfigJson();
- delete item;
- }
- void MainWindow::on_listWidget_3_customContextMenuRequested(const QPoint &pos)
- {
- QListWidgetItem* curItem = my3->itemAt( pos );
- if( curItem == NULL )
- return;
- QMenu *popMenu = new QMenu( this );
- QAction *deleteSeed = new QAction(tr("Delete"), this);
- popMenu->addAction( deleteSeed );
- this->qlw=my3;
- connect( deleteSeed, SIGNAL(triggered() ), this, SLOT( deleteSeedSlot()) );
- popMenu->exec( QCursor::pos() );
- delete popMenu;
- delete deleteSeed;
- }
- void MainWindow::on_listWidget_4_customContextMenuRequested(const QPoint &pos)
- {
- QListWidgetItem* curItem = my4->itemAt( pos );
- if( curItem == NULL )
- return;
- QMenu *popMenu = new QMenu( this );
- QAction *deleteSeed = new QAction(tr("Delete"), this);
- popMenu->addAction( deleteSeed );
- this->qlw=my4;
- connect( deleteSeed, SIGNAL(triggered() ), this, SLOT( deleteSeedSlot()) );
- popMenu->exec( QCursor::pos() );
- delete popMenu;
- delete deleteSeed;
- }
- /////////////////////////////////////////////////////////////////////////////////////////////右侧右击事件
- //滑块点击slot函数
- void MainWindow::onWidgetClicked()
- {
- QObject *senderObj = sender(); // 获取发出信号的对象指针
- if(RQJA.empty())return;
- if (senderObj)
- {
- QWidget *clickedWidget = qobject_cast<QWidget*>(senderObj); // 将指针转换为QWidget指针
- if (clickedWidget)
- {
- QString widgetName = clickedWidget->parentWidget()->objectName(); // 获取控件的对象名称
- if(widgetName=="slide_2")
- {
- if(customB2->dir==Qt::AlignLeft)
- {
- //变为1
- QJsonValueRef selectedValueRef = RQJA[1].toObject()["selected"];
- selectedValueRef = "1";
- qDebug()<<RQJA;
- }
- else{
- //变为0
- QJsonValueRef selectedValueRef = RQJA[1].toObject()["selected"];
- selectedValueRef = "0";
- qDebug()<<RQJA;
- }
- }
- else if(widgetName=="slide_3")
- {
- if(customB3->dir==Qt::AlignLeft)
- {
- //变为1
- QJsonValueRef selectedValueRef = RQJA[2].toObject()["selected"];
- selectedValueRef = "1";
- qDebug()<<RQJA;
- }
- else{
- //变为0
- QJsonValueRef selectedValueRef = RQJA[2].toObject()["selected"];
- selectedValueRef = "0";
- qDebug()<<RQJA;
- }
- }
- else
- {
- if(customB4->dir==Qt::AlignLeft)
- {
- //变为1
- QJsonValueRef selectedValueRef = RQJA[3].toObject()["selected"];
- selectedValueRef = "1";
- qDebug()<<RQJA;
- }
- else{
- //变为0
- QJsonValueRef selectedValueRef = RQJA[3].toObject()["selected"];
- selectedValueRef = "0";
- qDebug()<<RQJA;
- }
- }
- writeBackToConfigJson();
- }
- }
- }
- //修改config文件
- void MainWindow::writeBackToConfigJson(){
- if(!config_json_path.endsWith("json"))return;
- qDebug()<<config_json_path;
- QFile jsonFile(config_json_path);
- if (jsonFile.open(QIODevice::WriteOnly)) {
- QJsonDocument jsonDoc(RQJA);
- QByteArray jsonData = jsonDoc.toJson();
- qint64 bytesWritten = jsonFile.write(jsonData);
- if (bytesWritten == -1) {
- qDebug() << "Failed to write data to file.";
- } else {
- qDebug() << "Data written to file successfully.";
- }
- jsonFile.close();
- } else {
- qDebug() << "Failed to open file for writing.";
- }
- }
- //重新选择项目进行初始化
- void MainWindow::on_comboBox_currentTextChanged(const QString &arg1)
- {
- clearRight();
- QString folder = "/users/lal/documents/RedInterstitialData/HotUpdate2";
- QString currentPro = ui->comboBox->currentText();
- //初始化TreeView
- QString jsonPath = folder+"/"+currentPro+"/"+"Hotupdate.json";
- QJO=tool::readJsonFile(jsonPath);
- // 从JSON对象中提取数据
- QJA = QJO.value("children").toArray();
- ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);
- connect(ui->treeView, &QTreeView::customContextMenuRequested, this, &MainWindow::slotTreeMenu);
- //初始化treeview 和 combobox
- QTreeView *treeView=ui->treeView;
- QStandardItemModel* model=new QStandardItemModel(treeView);
- model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("名称"));
- treeView->setModel(model);
- initTreeView(model->invisibleRootItem(),QJA);
- qDebug()<<"QJA"<<QJA;
- }
- void MainWindow::clearRight()
- {
- my1->clear();
- my2->clear();
- my3->clear();
- my4->clear();
- this->customB2->pos_left_button();
- this->customB3->pos_left_button();
- this->customB4->pos_left_button();
- }
- void MainWindow::handleOperationCompleted(QString fromfilePath)
- {
- QStringList parts = fromfilePath.split("/");
- QObject *senderObj = sender();
- QListWidget *LW = qobject_cast<QListWidget*>(senderObj);
- //QString tofilePath1 = "/Users/lal/QT_pro/build-test_tool1-Qt_6_3_1_for_macOS-Debug/test_tool1.app/Contents/MacOS/~/Documents/RedInterstitialData/HotUpdate2/pro2/tes1/version1/group3";
- QString group_name;
- int group_index;
- if(LW->objectName()=="listWidget")
- {
- group_name="group1";
- group_index=0;
- }
- else if(LW->objectName()=="listWidget_2")
- {
- group_name="group2";
- group_index=1;
- }
- else if(LW->objectName()=="listWidget_3")
- {
- group_name="group3";
- group_index=2;
- }
- else
- {
- group_name="group4";
- group_index=3;
- }
- QString tofilePath1 = treeview_path+"/"+group_name;
- QFile sourceFile(fromfilePath);
- QFile targetFile(tofilePath1 + "/" +parts[parts.size()-1]);
- if (sourceFile.exists() && QDir(tofilePath1).exists()) {
- if (sourceFile.copy(targetFile.fileName())) {
- qDebug() << "File copied successfully.";
- LW->addItem(parts[parts.size()-1]);
- qDebug()<<this->parent();
- QJsonObject groupObject = RQJA[group_index].toObject();
- QJsonArray childrenArray = groupObject["children"].toArray();
- childrenArray.append(parts[parts.size()-1]);
- groupObject["children"] = childrenArray;
- RQJA[group_index] = groupObject;
- writeBackToConfigJson();
- } else {
- qDebug() << "Failed to copy file.";
- QMessageBox::information(this, "失败", "文件名重复");
- }
- } else {
- qDebug() << "Source file or target folder does not exist.";
- }
- }
|