新增自定义控件,修复查询添加问题

This commit is contained in:
taocong
2026-06-01 19:32:23 +08:00
parent fad539e127
commit cc7fc51399
9 changed files with 232 additions and 55 deletions
@@ -6,14 +6,11 @@
#include <QHeaderView>
#include <QMessageBox>
#include <QStandardItem>
#include <QLineEdit>
#include "ElaComboBox.h"
#include "ElaLineEdit.h"
#include "ElaPushButton.h"
#include "ElaText.h"
UF20FunctionSearchPage::UF20FunctionSearchPage(QWidget *parent)
: QWidget(parent)
, m_exactMatch(false)
{
initUI();
}
@@ -36,15 +33,14 @@ void UF20FunctionSearchPage::initUI()
m_searchComboBox->addItem("功能编号", "function_no");
searchLayout->addWidget(m_searchComboBox);
m_searchEdit = new ElaLineEdit;
m_searchEdit = new ElaSearchEdit;
m_searchEdit->setPlaceholderText("输入查询内容");
m_searchEdit->setMinimumWidth(300);
connect(m_searchEdit, &QLineEdit::returnPressed, this, &UF20FunctionSearchPage::onSearch);
searchLayout->addWidget(m_searchEdit);
m_searchEdit->setFixedSize(330, 35);
connect(m_searchEdit, &ElaSearchEdit::returnPressed, this, &UF20FunctionSearchPage::onSearch);
connect(m_searchEdit, &ElaSearchEdit::searchClicked, this, &UF20FunctionSearchPage::onSearch);
connect(m_searchEdit, &ElaSearchEdit::exactMatchChanged, this, &UF20FunctionSearchPage::onExactMatchToggled);
ElaPushButton *searchBtn = new ElaPushButton("搜索");
connect(searchBtn, &QPushButton::clicked, this, &UF20FunctionSearchPage::onSearch);
searchLayout->addWidget(searchBtn);
searchLayout->addWidget(m_searchEdit);
searchLayout->addStretch();
layout->addLayout(searchLayout);
@@ -64,13 +60,18 @@ void UF20FunctionSearchPage::initUI()
layout->addWidget(m_resultTable);
QHBoxLayout *tipLayout = new QHBoxLayout;
QLabel *tipLabel = new QLabel("💡 双击选中行添加转码业务");
QLabel *tipLabel = new QLabel("💡 双击选中行添加转码业务,只支持LS功能添加");
tipLabel->setStyleSheet("color: #666; font-size: 13px;");
tipLayout->addWidget(tipLabel);
tipLayout->addStretch();
layout->addLayout(tipLayout);
}
void UF20FunctionSearchPage::onExactMatchToggled(bool checked)
{
m_exactMatch = checked;
}
void UF20FunctionSearchPage::onSearch()
{
QString keyword = m_searchEdit->text().trimmed();
@@ -83,7 +84,7 @@ void UF20FunctionSearchPage::onSearch()
}
QString field = m_searchComboBox->currentData().toString();
QList<FunctionInfo> results = DataCache::instance()->searchUF20Functions(keyword, field);
QList<FunctionInfo> results = DataCache::instance()->searchUF20Functions(keyword, field, m_exactMatch);
if (results.isEmpty()) {
QMessageBox::information(this, "提示", "未找到匹配的功能");
@@ -113,6 +114,10 @@ void UF20FunctionSearchPage::onTableDoubleClicked(const QModelIndex &index)
{
if (index.isValid()) {
QString funcName = m_tableModel->data(m_tableModel->index(index.row(), 0)).toString();
if (!funcName.startsWith("LS_")) {
QMessageBox::information(this, "提示", "仅支持LS功能添加转码业务");
return;
}
emit addFunctionToConvert(funcName);
}
}
@@ -4,8 +4,7 @@
#include <QWidget>
#include <QStandardItemModel>
#include "ElaComboBox.h"
#include "ElaLineEdit.h"
#include "ElaPushButton.h"
#include "components/elasearchedit.h"
#include "ElaTableView.h"
class UF20FunctionSearchPage : public QWidget
@@ -17,19 +16,21 @@ public:
~UF20FunctionSearchPage();
signals:
void addFunctionToConvert(const QString &funcName);
void addFunctionToConvert(const QString& funcName);
private slots:
void onSearch();
void onExactMatchToggled(bool checked);
void onTableDoubleClicked(const QModelIndex &index);
private:
void initUI();
ElaComboBox *m_searchComboBox;
ElaLineEdit *m_searchEdit;
ElaSearchEdit *m_searchEdit;
ElaTableView *m_resultTable;
QStandardItemModel *m_tableModel;
bool m_exactMatch;
};
#endif
@@ -6,13 +6,11 @@
#include <QHeaderView>
#include <QMessageBox>
#include <QStandardItem>
#include <QLineEdit>
#include "ElaComboBox.h"
#include "ElaLineEdit.h"
#include "ElaPushButton.h"
UFT3FunctionSearchPage::UFT3FunctionSearchPage(QWidget *parent)
: QWidget(parent)
, m_exactMatch(false)
{
initUI();
}
@@ -35,15 +33,14 @@ void UFT3FunctionSearchPage::initUI()
m_searchComboBox->addItem("功能编号", "function_no");
searchLayout->addWidget(m_searchComboBox);
m_searchEdit = new ElaLineEdit;
m_searchEdit = new ElaSearchEdit;
m_searchEdit->setPlaceholderText("输入查询内容");
m_searchEdit->setMinimumWidth(300);
connect(m_searchEdit, &QLineEdit::returnPressed, this, &UFT3FunctionSearchPage::onSearch);
searchLayout->addWidget(m_searchEdit);
m_searchEdit->setFixedSize(330, 35);
connect(m_searchEdit, &ElaSearchEdit::returnPressed, this, &UFT3FunctionSearchPage::onSearch);
connect(m_searchEdit, &ElaSearchEdit::searchClicked, this, &UFT3FunctionSearchPage::onSearch);
connect(m_searchEdit, &ElaSearchEdit::exactMatchChanged, this, &UFT3FunctionSearchPage::onExactMatchToggled);
ElaPushButton *searchBtn = new ElaPushButton("搜索");
connect(searchBtn, &QPushButton::clicked, this, &UFT3FunctionSearchPage::onSearch);
searchLayout->addWidget(searchBtn);
searchLayout->addWidget(m_searchEdit);
searchLayout->addStretch();
layout->addLayout(searchLayout);
@@ -61,6 +58,11 @@ void UFT3FunctionSearchPage::initUI()
layout->addWidget(m_resultTable);
}
void UFT3FunctionSearchPage::onExactMatchToggled(bool checked)
{
m_exactMatch = checked;
}
void UFT3FunctionSearchPage::onSearch()
{
QString keyword = m_searchEdit->text().trimmed();
@@ -73,7 +75,7 @@ void UFT3FunctionSearchPage::onSearch()
}
QString field = m_searchComboBox->currentData().toString();
QList<FunctionInfo> results = DataCache::instance()->searchUFT3Functions(keyword, field);
QList<FunctionInfo> results = DataCache::instance()->searchUFT3Functions(keyword, field, m_exactMatch);
if (results.isEmpty()) {
QMessageBox::information(this, "提示", "未找到匹配的功能");
@@ -4,8 +4,7 @@
#include <QWidget>
#include <QStandardItemModel>
#include "ElaComboBox.h"
#include "ElaLineEdit.h"
#include "ElaPushButton.h"
#include "components/elasearchedit.h"
#include "ElaTableView.h"
class UFT3FunctionSearchPage : public QWidget
@@ -18,14 +17,16 @@ public:
private slots:
void onSearch();
void onExactMatchToggled(bool checked);
private:
void initUI();
ElaComboBox *m_searchComboBox;
ElaLineEdit *m_searchEdit;
ElaSearchEdit *m_searchEdit;
ElaTableView *m_resultTable;
QStandardItemModel *m_tableModel;
bool m_exactMatch;
};
#endif