#include "addtradedialog.h" #include "ui_addtradedialog.h" #include #include #include "userdata.h" #include AddTradeDialog::AddTradeDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AddTradeDialog) { ui->setupUi(this); } AddTradeDialog::~AddTradeDialog() { delete ui; } void AddTradeDialog::SetStockBasicList(const QList &stockBasicList) { int count = stockBasicList.count(); QStringList codeList,nameList; for(int i = 0 ; i < count; i++) { codeList.append(stockBasicList[i].code); nameList.append(stockBasicList[i].name); } m_StockBasicList = stockBasicList; InitLineEdit(codeList,nameList); } void AddTradeDialog::SetToken(const QString &token) { m_Token = token; } void AddTradeDialog::InitLineEdit(const QStringList& codeList,const QStringList& nameList) { QCompleter* codeCompleter = new QCompleter(codeList, ui->code); ui->code->setCompleter(codeCompleter); connect(codeCompleter, QOverload::of(&QCompleter::activated), [=](const QString &text){ on_code_Activated(text); }); QCompleter* nameCompleter = new QCompleter(nameList, ui->name); ui->name->setCompleter(nameCompleter); connect(nameCompleter, QOverload::of(&QCompleter::activated), [=](const QString &text){ on_name_Activated(text); });} void AddTradeDialog::on_pushButton_OK_clicked() { TradingRequestParam requestParam; requestParam.code = ui->code->text(); requestParam.name = ui->name->text(); requestParam.tradeDay = "2023-12-29"; requestParam.token = m_Token; UserData::Instanse()->AddTradeRecord(requestParam); this->accept(); } void AddTradeDialog::on_name_Activated(const QString &text) { qDebug() << "You selected:" << text; QString name = text; int count = m_StockBasicList.count(); for(int i = 0 ; i < count; i++) { if(m_StockBasicList[i].name == name) { ui->code->setText(m_StockBasicList[i].code); break; } } } void AddTradeDialog::on_code_Activated(const QString &text) { QString code = text; int count = m_StockBasicList.count(); for(int i = 0 ; i < count; i++) { if(m_StockBasicList[i].code == code) { ui->name->setText(m_StockBasicList[i].name); break; } } } void AddTradeDialog::on_name_editingFinished() { QString name = ui->name->text(); int count = m_StockBasicList.count(); for(int i = 0 ; i < count; i++) { if(m_StockBasicList[i].name == name) { ui->code->setText(m_StockBasicList[i].code); break; } } } void AddTradeDialog::on_code_editingFinished() { QString code = ui->code->text(); int count = m_StockBasicList.count(); for(int i = 0 ; i < count; i++) { if(m_StockBasicList[i].code == code) { ui->name->setText(m_StockBasicList[i].name); break; } } }