From f7dd8173db8f3c2eb5beefa960d86a2bc2144f9f Mon Sep 17 00:00:00 2001
From: wumu <mayi@mayi.com>
Date: 星期日, 02 三月 2025 23:58:44 +0800
Subject: [PATCH] 250302

---
 getstocklist.cpp |  116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 110 insertions(+), 6 deletions(-)

diff --git a/getstocklist.cpp b/getstocklist.cpp
index 61776ef..c1b5066 100644
--- a/getstocklist.cpp
+++ b/getstocklist.cpp
@@ -7,6 +7,10 @@
 #include <QJsonObject>
 #include <QJsonArray>
 #include <QLibrary> // 鐢ㄤ簬鍔犺浇dll鍔ㄦ�佸簱鐨勭被
+#include <QDateTime>
+
+
+#pragma execution_character_set("utf-8")
 
 GetStockList::GetStockList(QWidget *parent) :
     QMainWindow(parent),
@@ -16,10 +20,14 @@
     ui->pushButton_get->hide();
     ui->statusbar->hide();
 
+    // 娉ㄥ唽鍏冪被鍨�
+    qRegisterMetaType<QVector<QVector<QString>>>("QVector<QVector<QString>> &");
     // 鏂规2:
     // 濡傛灉https 璁块棶鐨勬椂鍊欙紝杩樻槸鐖彇澶辫触锛屽彲浠ヤ唬鐮佸姞杞藉姩鎬佸簱鏉ユ敮鎸�
     // 鍓嶆彁鏉′欢鏄妸2涓猟ll鍔ㄦ�佸簱鎷疯礉鐨勭敓鎴愮洰褰曚腑:libeay32.dll 鍜� ssleay32.dll
     // 鎷疯礉鍒扮敓鎴愮洰褰曪紝灏卞彲浠ョ洿鎺ュ姞杞�
+    // 鑻ユ槸msvc 64bit鐨勭紪璇戝櫒锛岄渶瑕佷笅杞藉搴斾綅鏁扮殑dll搴撴潵鎷疯礉鍗冲彲 -- openssl-1.0.2q-x64_86-win64.zip
+
     QLibrary lb("libeay32.dll");
     if(lb.load()){
         qDebug()<<"load libeay32.dll 鎴愬姛";
@@ -174,10 +182,10 @@
 
     // 鏀寔缂栬緫妗嗙殑妯$硦鍖归厤
     m_completer = new QCompleter(this);
-    m_completer->setModel(m_customModel);
+    m_completer->setModel(m_customModel); // 鍏宠仈鍖呭惈鎵�鏈夊尮閰嶅唴瀹圭殑妯″瀷鎴栬�呭瓧绗︿覆閾捐〃
     m_completer->setCaseSensitivity(Qt::CaseInsensitive); // 涓嶅尯鍒嗗ぇ灏忓啓
     m_completer->setCompletionMode(QCompleter::PopupCompletion); // 鑷姩鏄剧ず涓嬫媺妗�
-    m_completer->setFilterMode(Qt::MatchStartsWith); // 鍓嶇紑鍖归厤
+    m_completer->setFilterMode(Qt::MatchContains); // 鍓嶇紑鍖归厤銆佸寘鍚�佸悗缂�
     ui->lineEdit_search->setCompleter(m_completer); // 鍏宠仈鍖归厤鐨勬帶浠�
 
 }
@@ -265,6 +273,9 @@
             m_model->appendRow(rowItems);
         }
     }
+
+    // 鍙戝皠淇″彿
+    emit sendCodeNames(m_codeNames);
 }
 
 
@@ -525,9 +536,16 @@
                 if(ma5 >= open && ma10 >= open && ma20 >= open && ma30 >= open
                         && ma5 <= close && ma10 <= close && ma20 <= close && ma30 <= close){
                     qDebug()<<"涓�闃崇┛鍥涚嚎:"<< code <<curDateTime<<" 浠锋牸:"<<close << "閲忚兘姣�:"<<volume_rate;
-                    QString info = QString("<font size=8 color=red> %3 %4 涓�闃崇┛鍥涚嚎:%1 浠锋牸:%2 閲忚兘姣�:%5 鍛ㄦ湡:%6  甯傚��:%7浜�</font>").arg(curDateTime).arg(close).arg(code).arg(m_codeNames[code]).arg(volume_rate)
-                            .arg(m_dateType).arg(market_cap/100000000.0);
-                    emit sendInfoMess(info);
+                    if(volume_rate > 4){
+                        QString info = QString("<font size=8 color=blue> %3 %4 涓�闃崇┛鍥涚嚎:%1 浠锋牸:%2 閲忚兘姣�:%5 鍛ㄦ湡:%6  甯傚��:%7浜�</font>").arg(curDateTime).arg(close).arg(code).arg(m_codeNames[code]).arg(volume_rate)
+                                .arg(m_dateType).arg(market_cap/100000000.0);
+                        emit sendInfoMess(info);
+                    }else{
+                        QString info = QString("<font size=8 color=red> %3 %4 涓�闃崇┛鍥涚嚎:%1 浠锋牸:%2 閲忚兘姣�:%5 鍛ㄦ湡:%6  甯傚��:%7浜�</font>").arg(curDateTime).arg(close).arg(code).arg(m_codeNames[code]).arg(volume_rate)
+                                .arg(m_dateType).arg(market_cap/100000000.0);
+                        emit sendInfoMess(info);
+                    }
+
                 }
             }
 
@@ -953,12 +971,14 @@
 
 void GetStockList::on_pushButton_search_clicked()
 {
+    ui->tableView->clearSelection();
     QString condition = ui->lineEdit_search->text();
     for(int i =0;i<m_customModel->rowCount();++i){
         if(m_customModel->data(m_customModel->index(i,0)).toString() == condition
                 || m_customModel->data(m_customModel->index(i,1)).toString() == condition)
         {
-            ui->tableView->setCurrentIndex(m_customModel->index(i,0));
+            //ui->tableView->setCurrentIndex(m_customModel->index(i,0));
+            ui->tableView->selectRow(i);
             break;
         }
     }
@@ -968,3 +988,87 @@
 {
     on_pushButton_search_clicked();
 }
+
+void GetStockList::showHistoryModelData(QVector<QVector<QString>> &model) // 浠庡巻鍙查偅杈瑰皢鏁版嵁鍙戣繃鏉�
+{
+    qDebug()<<QDateTime::currentDateTime();
+    m_model->setRowCount(0);
+    for(int i=0;i<model.size();++i){
+        //qDebug()<<"i="<<i;
+        QList<QStandardItem*> items;
+        m_codeNames[model[i][1]] = model[i][0];
+        for(int j=0;j<model.at(0).size();++j){
+            items.append(new QStandardItem(model[i][j]));
+
+            if(j==2){
+                items.append(new QStandardItem(model[i][j]));
+            }
+            if(j==3){
+                QStandardItem *percentItem =  items.back();
+                if(percentItem->text().toDouble() > 0){
+                    percentItem->setData(QColor("red"),Qt::DecorationRole); // 娣诲姞涓�涓楗扮殑棰滆壊涓虹孩鑹�
+                    percentItem->setData(QColor("red"),Qt::TextColorRole);  // 灏嗗瓧浣撻鑹茶缃负绾㈣壊
+                    items.at(0)->setData(QColor("red"),Qt::TextColorRole);  // 灏嗚偂绁ㄥ悕瀛楄缃负绾㈣壊
+                 }
+                else if(percentItem->text().toDouble() < 0){
+                    percentItem->setData(QColor("green"),Qt::BackgroundColorRole);
+                    items.at(0)->setData(QColor("green"),Qt::TextColorRole);
+                }
+            }
+
+        }
+        m_model->appendRow(items);
+    }
+    qDebug()<<"鍘嗗彶鍒颁俊鎭祴鍊煎畬鎴� 琛屾暟:"<<m_model->rowCount();
+    qDebug()<<QDateTime::currentDateTime();
+}
+
+void GetStockList::showHistoryModelData(QStandardItemModel *model)
+{
+
+//    qDebug()<<QDateTime::currentDateTime();
+//    //ui->tableView->setModel(model);
+//    QVector<QVector<QString>> vec;
+//    for(int i=0;i<model->rowCount();++i){
+//        //QString row;
+//        QVector<QString> tmp;
+
+//        m_codeNames[model->item(i,1)->text()] = model->item(i,0)->text();
+
+//        for(int j=0;j<model->columnCount();++j){
+//            //row+=model->item(i,j)->text()+" ";
+//            tmp.append(model->item(i,j)->text());
+//        }
+//        //qDebug()<<i<<row;
+//        vec.append(tmp);
+//    }
+//    qDebug()<<"vec size:"<<vec.size();
+
+    qDebug()<<QDateTime::currentDateTime();
+    m_model->setRowCount(0);
+    for(int i=0;i<model->rowCount();++i){
+        QList<QStandardItem*> items;
+        m_codeNames[model->item(i,1)->text()] = model->item(i,0)->text();
+        for(int j=0;j<model->columnCount();++j){
+            items.append(new QStandardItem(model->item(i,j)->text()));
+            if(j==2){
+                items.append(new QStandardItem(model->item(i,j)->text()));
+            }
+            if(j==3){
+                QStandardItem *percentItem =  items.back();
+                if(percentItem->text().toDouble() > 0){
+                    percentItem->setData(QColor("red"),Qt::DecorationRole); // 娣诲姞涓�涓楗扮殑棰滆壊涓虹孩鑹�
+                    percentItem->setData(QColor("red"),Qt::TextColorRole);  // 灏嗗瓧浣撻鑹茶缃负绾㈣壊
+                    items.at(0)->setData(QColor("red"),Qt::TextColorRole);  // 灏嗚偂绁ㄥ悕瀛楄缃负绾㈣壊
+                 }
+                else if(percentItem->text().toDouble() < 0){
+                    percentItem->setData(QColor("green"),Qt::BackgroundColorRole);
+                    items.at(0)->setData(QColor("green"),Qt::TextColorRole);
+                }
+            }
+        }
+        m_model->appendRow(items);
+    }
+    qDebug()<<"鍘嗗彶鍒颁俊鎭祴鍊煎畬鎴� 鏉℃暟:"<<m_model->rowCount();
+    qDebug()<<QDateTime::currentDateTime();
+}

--
Gitblit v1.8.0