Перенес формирование Item ов в отдельный поток

This commit is contained in:
krivoshein
2025-01-23 17:54:21 +03:00
parent 2ab543d6eb
commit d6c78ba428
9 changed files with 166 additions and 5 deletions

View File

@@ -0,0 +1,67 @@
#include <QThread>
#include <QDebug>
#include "tasktreepreparation.h"
TaskTreePreparation::TaskTreePreparation(QObject *parent) : QObject(parent)
{
qDebug() << "TaskTreePreparation init thread ID " << QThread::currentThreadId();
}
QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, QTreeWidgetItem *parentItem)
{
QTreeWidgetItem* itemModule = nullptr;
QString text;
QString ID = QString::number(module->getID());
if(parentItem)
{
itemModule = new QTreeWidgetItem();
parentItem->addChild(itemModule);
}
else
{
//itemModule = new QTreeWidgetItem(treeWidget);
itemModule = new QTreeWidgetItem();
}
if(module->getType() == ModuleType::TYPE_PM)
{
PM* PMmodul = static_cast<PM*>(module);
text = PMmodul->getLangStructRus().title;
for(Module* module : PMmodul->getListChildModules())
{
addModuleToTreeWidget(module, itemModule);
}
}
else
{
DM* DMmodul = static_cast<DM*>(module);
text = DMmodul->getLangStructRus().techName;
//itemModule->setFlags(itemModule->flags() | Qt::ItemIsUserCheckable);
//itemModule->setCheckState(0, Qt::Checked);
itemModule->setIcon(0, QIcon(":/resources/icons/procedure.png"));
}
itemModule->setText(0, text);
itemModule->setText(1, ID);
return itemModule;
}
void TaskTreePreparation::slot_prepareListItems(QList<Module *> listAllModules)
{
qDebug() << "TaskTreePreparation::slot_prepareListItems thread ID " << QThread::currentThreadId();
listItems.clear();
for(Module* module : listAllModules)
{
QTreeWidgetItem* item = addModuleToTreeWidget(module);
listItems.append(item);
}
Q_EMIT signal_listItemsReady(listItems);
}