qmlRegisterType<ModuleDataModel>("CustomComponents", 1, 0, "ModuleDataModel"); viewer.rootContext()->setContextProperty("pModel", QVariant::fromValue(pModel));
pModel->refreshModelData(8); // 8 - количество строк
TClass::TClass(ModuleDataModel *pModel, bool readOnly) : QObject(0), m_pModel(pModel), m_readOnly(readOnly){ QtConcurrent::run(this, &TClass::__process);}void TClass::__process(){ static int counter = 0; qDebug() << "started!" << counter++; while(qApp) { Sleepy::usleep(1); int size = m_pModel->m_moduleDataItems.size(); for(int i = 0; i < size; i++) { qreal val = m_pModel->data(i, ModuleDataModel::DeviceValueRole).toReal(); if(!m_readOnly) { m_pModel->setData(i, val ? 0 : 10, ModuleDataModel::DeviceValueRole); } } }}
....main.... TClass tclass1(pModel, false), tclass2(pModel, false), tclass3(pModel, true), tclass4(pModel, true); QmlApplicationViewer viewer; .... viewer.showExpanded(); return app->exec();}
QVariant ModuleDataModel::data(const int pos, int role) const{ if(pos > (m_moduleDataItems.size() - 1)) return QVariant(); const ModuleDataItem &moduleDataItem = m_moduleDataItems.at(pos); switch(role) { case DeviceValueRole: return QVariant::fromValue(moduleDataItem.deviceValue); case UserValueRole: return QVariant::fromValue(moduleDataItem.userValue); .... }}bool ModuleDataModel::setData(const int index1, const QVariant &value, const int role){ Q_ASSERT(index1 >= 0); Q_ASSERT(index1 < m_moduleDataItems.size()); ModuleDataItem moduleDataItem = getItem(index1); switch(role) { case DeviceValueRole: moduleDataItem.deviceValue = value.toUInt(); break; case UserValueRole: moduleDataItem.userValue = value.toUInt(); break; } .... m_moduleDataItems.replace(index1, moduleDataItem); emit dataChanged(index(index1), index(index1)); return true;}
m_moduleDataItems.replace(index1, moduleDataItem);
mutex.lock(); number *= 5; number /= 4; mutex.unlock();
C++ (Qt)// внутри оператора =m_double = second.m_double;
как это не знаешь? у вас функция на миллион строк? а что именно лочить то, надеюсь, знаете? или не знаете, поэтому и предпочитаете?)