#include "uft3functionsearchpage.h" #include "src/utils/datacache.h" #include #include #include #include #include #include #include "ElaComboBox.h" #include "ElaLineEdit.h" #include "ElaPushButton.h" UFT3FunctionSearchPage::UFT3FunctionSearchPage(QWidget *parent) : QWidget(parent) { initUI(); } UFT3FunctionSearchPage::~UFT3FunctionSearchPage() { } void UFT3FunctionSearchPage::initUI() { QVBoxLayout *layout = new QVBoxLayout(this); layout->setContentsMargins(30, 30, 30, 30); layout->setSpacing(20); QHBoxLayout *searchLayout = new QHBoxLayout; searchLayout->setSpacing(10); m_searchComboBox = new ElaComboBox; m_searchComboBox->addItem("功能名称", "cname"); m_searchComboBox->addItem("功能编号", "function_no"); searchLayout->addWidget(m_searchComboBox); m_searchEdit = new ElaLineEdit; m_searchEdit->setPlaceholderText("输入查询内容"); m_searchEdit->setMinimumWidth(300); searchLayout->addWidget(m_searchEdit); ElaPushButton *searchBtn = new ElaPushButton("搜索"); connect(searchBtn, &QPushButton::clicked, this, &UFT3FunctionSearchPage::onSearch); searchLayout->addWidget(searchBtn); searchLayout->addStretch(); layout->addLayout(searchLayout); m_resultTable = new QTableWidget; m_resultTable->setColumnCount(3); m_resultTable->setHorizontalHeaderLabels({"英文名", "功能编号", "功能名称"}); m_resultTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); m_resultTable->setMinimumHeight(400); m_resultTable->setSelectionBehavior(QAbstractItemView::SelectRows); m_resultTable->setEditTriggers(QAbstractItemView::NoEditTriggers); layout->addWidget(m_resultTable); } void UFT3FunctionSearchPage::onSearch() { QString keyword = m_searchEdit->text().trimmed(); m_resultTable->setRowCount(0); if (keyword.isEmpty()) { QMessageBox::information(this, "提示", "请输入查询内容"); return; } QString field = m_searchComboBox->currentData().toString(); QList results = DataCache::instance()->searchUFT3Functions(keyword, field); if (results.isEmpty()) { QMessageBox::information(this, "提示", "未找到匹配的功能"); return; } int row = 0; for (const FunctionInfo& info : results) { m_resultTable->insertRow(row); QTableWidgetItem *cnameItem = new QTableWidgetItem(info.cname); cnameItem->setFlags(cnameItem->flags() & ~Qt::ItemIsEditable); m_resultTable->setItem(row, 0, cnameItem); QTableWidgetItem *eNameItem = new QTableWidgetItem(info.eName); eNameItem->setFlags(eNameItem->flags() & ~Qt::ItemIsEditable); m_resultTable->setItem(row, 1, eNameItem); QTableWidgetItem *funcNoItem = new QTableWidgetItem(info.functionNo); funcNoItem->setFlags(funcNoItem->flags() & ~Qt::ItemIsEditable); m_resultTable->setItem(row, 2, funcNoItem); row++; } }