#include #include "selectorDialog.h" #include "global.h" #include "dataBase.h" SelectorDialog::SelectorDialog(QWidget* parent) : QDialog(parent) ,m_buttonBox(nullptr) { this->setWindowFlags(Qt::FramelessWindowHint | windowFlags()); } void SelectorDialog::initial(SelectorDialogType tpe) { m_dlgType = tpe; setupUI(); setupConnections(); } void SelectorDialog::setupUI() { setWindowTitle("选择类型"); setFixedSize(200, 200); m_listView = new QListView(this); QStandardItemModel* model = initialModel(); m_listView->setModel(model); m_listView->setEditTriggers(QAbstractItemView::NoEditTriggers); m_buttonBox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel); QVBoxLayout* layout = new QVBoxLayout(this); layout->addWidget(m_listView); layout->addWidget(m_buttonBox); } QStandardItemModel * SelectorDialog::initialModel() { QStandardItemModel *model = new QStandardItemModel(this); if(m_dlgType == ST_MetaModel){ QList metas = getMetaList(); for(auto &meta:metas) { QStandardItem *item = new QStandardItem(); //item->setIcon(QIcon(":/icons/folder.png")); // 设置图标 item->setText(meta.modelName); // 设置文本 item->setData(meta.modelType,Qt::UserRole); model->appendRow(item); } } else if(m_dlgType == ST_ComponentType){ QStringList components = {"断路器", "母线", "异步电动机"}; for(auto &obj:components) { QStandardItem *item = new QStandardItem(); //item->setIcon(QIcon(":/icons/folder.png")); // 设置图标 item->setText(obj); // 设置文本 //item->setData("Extra Data for Item 1", Qt::UserRole); // 设置额外属性 model->appendRow(item); } } return model; } void SelectorDialog::setupConnections() { connect(m_listView, &QListView::doubleClicked, [this](const QModelIndex& index){ if(m_dlgType == ST_MetaModel){ m_selectedMeta.modelName = index.data().toString(); m_selectedMeta.modelType = index.data(Qt::UserRole).toString(); } else{ m_selectedComponent = index.data().toString(); } accept(); }); connect(m_buttonBox, &QDialogButtonBox::accepted, [this]{ if(auto index = m_listView->currentIndex(); index.isValid()) { if(m_dlgType == ST_MetaModel){ m_selectedMeta.modelName = index.data().toString(); m_selectedMeta.modelType = index.data(Qt::UserRole).toString(); } else{ m_selectedComponent = index.data().toString(); } } accept(); }); connect(m_buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); } QList SelectorDialog::getMetaList() const { QMap modelMap = DataBase::GetInstance()->ModelType(); QList modelSet; for(auto &model:modelMap) { modelSet.append(model); } return modelSet; }