#include "loadPageDlg.h" #include "dataBase.h" #include "ui_loadPageDlg.h" LoadPageDlg::LoadPageDlg(QWidget *parent) : QDialog(parent) , ui(new Ui::loadPageDlg) { ui->setupUi(this); this->setWindowFlags(Qt::FramelessWindowHint | windowFlags()); initial(); } LoadPageDlg::~LoadPageDlg() { delete ui; } void LoadPageDlg::initial() { connect(ui->btnOk,&QPushButton::clicked,this,&LoadPageDlg::onOkClicked); connect(ui->btnCancel,&QPushButton::clicked,this,&LoadPageDlg::onCancelClicked); m_standardItemModel = new QStandardItemModel(); // 使用model设置QTreeView表头 m_standardItemModel->setHorizontalHeaderLabels(QStringList(QStringLiteral("组态编辑"))); // TreeView控件载入model ui->treeView->setModel(m_standardItemModel); // 展开数据 ui->treeView->expandAll(); connect(ui->treeView, &QTreeView::activated, this,&LoadPageDlg::onItemChanged); } void LoadPageDlg::updateList() { if(m_standardItemModel) { m_standardItemModel->removeRows(0, m_standardItemModel->rowCount()); QStandardItem* itemRoot = m_standardItemModel->invisibleRootItem(); // 创建并添加Item的第一个子节点 QStandardItem* itemPage = new QStandardItem(QStringLiteral("项目列表")); itemRoot->appendRow(itemPage); QList pageList; auto lst = DataBase::GetInstance()->getAllEditorProject(); for(auto &info:lst) { QStandardItem* item = new QStandardItem(info.name); item->setData(info.uuid); pageList.append(item); } itemPage->appendRows(pageList); ui->treeView->expandAll(); } } void LoadPageDlg::onOkClicked() { QModelIndex selected = ui->treeView->currentIndex(); QStandardItem* item = m_standardItemModel->itemFromIndex(selected); // 根据index获取当前item if(item) { _pageName = item->text(); QUuid uid = item->data().toUuid(); Q_EMIT selectedProject(_pageName,uid); } hide(); } void LoadPageDlg::onCancelClicked() { hide(); } void LoadPageDlg::onItemChanged(const QModelIndex& current) { QModelIndex index = current.sibling(current.row(), 0); // 获取当前item的子节点index note:子节点只有一行的情况下 QStandardItem* item = m_standardItemModel->itemFromIndex(index); // 根据index获取当前item if(item) { _pageName = item->text(); } }