#include "separateanalysis.h"
|
#include "ui_separateanalysis.h"
|
|
#include <QDateTime>
|
#include <QMessageBox>
|
#include <QSqlQuery>
|
#include <QDebug>
|
#include <QSqlError>
|
|
SeparateAnalysis::SeparateAnalysis(QWidget *parent) :
|
QMainWindow(parent),
|
ui(new Ui::SeparateAnalysis)
|
{
|
ui->setupUi(this);
|
|
m_model = new QStandardItemModel(this);
|
m_model->setColumnCount(11); // 设置10列
|
QStringList labels;
|
labels<<"股票名字"<<"股票代号"<<"总市值(亿)"<<"涨跌幅(%)"<<"收盘价"<<"成交额(亿)"<<"成交量(手)"<<"换手率(%)"<<"市盈率"<<"交易额排名"<<"交易时间"<<"排名趋势变化";
|
m_model->setHorizontalHeaderLabels(labels); // 设置模型的列标签名
|
ui->tableView->setModel(m_model);
|
|
initMySQL(); // 初始化数据库
|
}
|
|
SeparateAnalysis::~SeparateAnalysis()
|
{
|
delete ui;
|
}
|
|
void SeparateAnalysis::calcRankChange()
|
{
|
|
}
|
|
void SeparateAnalysis::initMySQL()
|
{
|
//添加一个数据库
|
db=QSqlDatabase::addDatabase("QMYSQL"); //括号内要写出数据库的类型
|
//设置数据库
|
db.setHostName("127.0.0.1"); //设置数据库的主机ip
|
//设置数据库的用户名
|
db.setUserName("root");
|
//设置数据库的密码
|
db.setPassword("root"); //这个就是安装MySQL时设置的密码
|
//设置数据库的名字
|
db.setDatabaseName("stock_plan");
|
//打开数据库(已经安装过mysql驱动了)
|
if(db.open()==false){
|
QMessageBox::warning(this,"waring",db.lastError().text());
|
}else{
|
qDebug()<<"SeparateAnalysis mysql conn ok";
|
}
|
}
|
void SeparateAnalysis::on_pushButton_search_clicked()
|
{
|
ui->label_status->setText("正在查询,请稍等...");
|
qint64 tt = QDateTime::currentMSecsSinceEpoch();
|
QString name = ui->comboBox_name->currentText();
|
QString sql = QString("select name,code,market_capital,percent,close,amount,volume,turnover_rate,pe_ttm,amount_rank,time_trade from stock_day_info where name = '%1'").arg(name);
|
|
QSqlQuery que(db);
|
int rows = 0;
|
if(que.exec(sql)){
|
qDebug()<<"select ok";
|
m_model->setRowCount(0); // 重置模型行数
|
//int rows = 0;
|
int rank_val = 0;
|
while (que.next()) {
|
QString name = que.value(0).toString();
|
QString code = que.value(1).toString();
|
QString market_capital = QString::number(que.value(2).toDouble()/100000000);
|
QString percent = que.value(3).toString();
|
QString close = que.value(4).toString();
|
QString amount = QString::number(que.value(5).toDouble()/100000000);
|
QString volume = que.value(6).toString();
|
QString turnover_rate = que.value(7).toString();
|
QString pe_ttm = que.value(8).toString();
|
QString amount_rank = que.value(9).toString();
|
QString time_trade = que.value(10).toString();
|
|
//m_modelDatas.append({name,code,market_capital,percent,close,amount,volume,turnover_rate,pe_ttm,amount_rank});
|
|
QList<QStandardItem*> items;
|
items.append(new QStandardItem(name));
|
items.append(new QStandardItem(code));
|
items.append(new QStandardItem(market_capital));
|
//items.append(new QStandardItem(percent));
|
QStandardItem *percentItem = new QStandardItem(percent);
|
if(percent.toDouble() > 0){
|
percentItem->setData(QColor("red"),Qt::DecorationRole); // 添加一个装饰的颜色为红色
|
percentItem->setData(QColor("red"),Qt::TextColorRole); // 将字体颜色设置为红色
|
items.at(0)->setData(QColor("red"),Qt::TextColorRole); // 将股票名字设置为红色
|
}
|
else if(percent.toDouble() < 0){
|
percentItem->setData(QColor("green"),Qt::BackgroundColorRole);
|
items.at(0)->setData(QColor("green"),Qt::TextColorRole);
|
}
|
items.append(percentItem);
|
|
items.append(new QStandardItem(close));
|
items.append(new QStandardItem(amount));
|
items.append(new QStandardItem(volume));
|
items.append(new QStandardItem(turnover_rate));
|
items.append(new QStandardItem(pe_ttm));
|
items.append(new QStandardItem(amount_rank));
|
items.append(new QStandardItem(time_trade));
|
if(rank_val != 0){
|
double rank_rate = 1 - (amount_rank.toDouble()/rank_val);
|
//items.append(new QStandardItem(QString::number(rank_rate)));
|
rank_val = amount_rank.toInt();
|
QStandardItem * amount_rank_item = new QStandardItem(QString::number(rank_rate));
|
if(rank_rate > 0.9){
|
amount_rank_item->setData(QColor("red"),Qt::BackgroundColorRole);
|
}
|
items.append(amount_rank_item);
|
|
}
|
if(rank_val == 0 && amount_rank.toInt() != 0){
|
rank_val = amount_rank.toInt();
|
}
|
m_model->appendRow(items);
|
rows++;
|
}
|
qDebug()<<"查询到行数:"<<rows;
|
|
}else{
|
qDebug()<<"select fail"<<que.lastError().text();
|
}
|
|
qint64 need = QDateTime::currentMSecsSinceEpoch()-tt;
|
ui->label_status->setText(QString("耗时:%1 毫秒,查询完成.条数: %2").arg(QString::number(need)).arg(QString::number(rows)));
|
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
|
}
|
|
void SeparateAnalysis::setNamesToCombo(QMap<QString, QString> &names)
|
{
|
// 会卡顿,需要研究一下
|
ui->comboBox_name->clear();
|
for(auto key:names.values()){
|
ui->comboBox_name->addItem(key);
|
}
|
}
|