量化交易之QT篇 - IController - 接口类(stable版)

这篇具有很好参考价值的文章主要介绍了量化交易之QT篇 - IController - 接口类(stable版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

// IController.h

#ifndef ICONTROLLER_H
#define ICONTROLLER_H

#include <QMainWindow>
#include <QSettings>

#include "TQZModel/AccountModel.h"

class IController : public QMainWindow
{
    Q_OBJECT
public:
    explicit IController(QWidget *parent = nullptr);
    virtual ~IController();

protected:
    virtual void ResetWindow(double widthScale, double heightScale);

private:
    virtual void mouseMoveEvent(QMouseEvent *event);
    virtual void mousePressEvent(QMouseEvent *event);
    virtual void mouseReleaseEvent(QMouseEvent *event);
    virtual void mouseDoubleClickEvent(QMouseEvent *event);

    virtual void paintEvent(QPaintEvent *event);


protected:
    QMap<QString, AccountModel>* accountModels(QString settingPath="./config/iniTest.ini");


private:
    bool m_moveable;
    QPoint z;

    QMap<QString, AccountModel>* m_accountModels;

signals:

};

#endif // ICONTROLLER_H
// IController.cpp

#include "IController.h"
#include "ui_mainwindow.h"

#include <QScreen>
#include <QMouseEvent>
#include <QDebug>
#include <QPainter>

#include <QWidget>
#include "IController.h"
#include "TQZModel/AccountModel.h"

#include <QMap>


IController::IController(QWidget *parent) :
    QMainWindow(parent),
    m_moveable(false),
    m_accountModels(nullptr)
{

}


QMap<QString, AccountModel>* IController::accountModels(QString settingPath) {
    if (this->m_accountModels == nullptr) {
        this->m_accountModels = new QMap<QString, AccountModel>();

        QSettings setting(settingPath, QSettings::IniFormat);

        QStringList groupList = setting.childGroups();
        foreach (const QString &group, groupList) {
            QMap<QString, QString> accountMap;

            setting.beginGroup(group);
            foreach (const QString &key, setting.allKeys()) {
                accountMap.insert(key, setting.value(key).toString());
            }
            setting.endGroup();

            this->m_accountModels->insert(group, AccountModel(accountMap));
        }
    }

    return this->m_accountModels;
}


void IController::ResetWindow(double widthScale, double heightScale) {
    widthScale = (widthScale > 1) ? 1 : widthScale;
    heightScale = (heightScale > 1) ? 1 : heightScale;

    QScreen *screen = qApp->primaryScreen();

    int screenWidth = screen->size().width();
    int screenHeight = screen->size().height();
    this->resize(screenWidth * widthScale, screenHeight * heightScale);
    this->move(screenWidth * (1 - widthScale) * 0.5, screenHeight * (1 - heightScale) * 0.5);

    this->setAttribute(Qt::WA_TranslucentBackground);
}

void IController::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setBrush(QBrush(QColor(50, 50, 50, 248)));
    painter.setPen(Qt::transparent);

    QRect rect = this->rect();
    rect.setWidth(rect.width() - 1);
    rect.setHeight(rect.height() - 1);
    painter.drawRoundedRect(rect, 6, 6);

    QWidget::paintEvent(event);
}

void IController::mousePressEvent(QMouseEvent *event) {
    if (event->button() != Qt::LeftButton)
        return;

    QWidget::mousePressEvent(event);

    QPoint y = event->globalPos();
    QPoint x = this->geometry().topLeft();
    this->z = y - x;

    this->m_moveable = true;
}

void IController::mouseMoveEvent(QMouseEvent *event) {
    if (!this->m_moveable)
        return;

    QWidget::mouseMoveEvent(event);

    QPoint y = event->globalPos();
    QPoint x = y - this->z;


    if (this->isMaximized())
        return;

    this->move(x);
}

void IController::mouseReleaseEvent(QMouseEvent *event) {
    if (event->button() != Qt::LeftButton)
        return;

    QWidget::mouseReleaseEvent(event);

    this->m_moveable = false;
}

void IController::mouseDoubleClickEvent(QMouseEvent *event) {
    if (event->button() != Qt::RightButton)
        return;

    QWidget::mouseDoubleClickEvent(event);
}


IController::~IController() {
    if (this->m_accountModels != nullptr) {
        delete m_accountModels;
        this->m_accountModels = nullptr;
    }
}

文章来源地址https://www.toymoban.com/news/detail-406190.html

到了这里,关于量化交易之QT篇 - IController - 接口类(stable版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 量化策略交易软件开发 智能量化机器人 量化高频交易app开发

    美团秋招意向 某量化私募-社会招聘/校园招聘/应届生招聘-C++开发工程师 上海农商行Fintech的Offer到底值不值得?不完全指北 周六加班..-_-(来自dogsbody的怨气,呜呜呜) 【字节跳动】抖音支付实习生| 流程快 8月就20万简历了,还能投递吗焦虑啊 小米正式批 快手秋招今年大动

    2024年02月07日
    浏览(34)
  • QMT量化交易网格交易 源码

    想必大家在炒股的过程中都会遇到以下三个问题,第一个是股市大部分时间都是震荡的。 我们都知道,A股市场由于自身的特点,用通俗的话讲就是牛市来的比较快,熊市走的相对比较慢,盘整的时间占大多数,统计数字表明震荡的行情大概占A股市场80%的时间, 对于我们普通

    2024年02月02日
    浏览(37)
  • AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀

    目录 一、引言 二、ChatGPT与量化交易的融合 三、实践应用:ChatGPT在量化交易中的成功案例 四、挑战与前景 五、结论 《AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀》📚→ 当当 | 京东 亮点 内容简介 获取方式 前些天发现了一个巨牛的人工智能学习网站,通俗易懂

    2024年02月03日
    浏览(40)
  • 高频交易与量化交易到底有什么区别?

      高频交易 也可以说是量化 交易,但 是 量化 交易可不 仅仅是高频交易。 或者说,高频交易是量化交易中的一个部分,一种形式 。 都 是 资本市场和计算机领域快速发展 的必然产物 。 近些年来国内

    2024年02月16日
    浏览(31)
  • qmt和ptrade有什么区别?国内免费量化交易软件精选:让你轻松上手量化交易!

    QMT 和 PTrade 是两个不同的平台,具有不同的功能和特点。 QMT(Quantitative Market Trading)是一种量化交易平台,主要面向专业的量化交易员和机构交易员。它提供了一系列的工具和功能,帮助交易员进行定量分析、模型开发和策略测试。QMT 通常具有复杂的算法和数据分析功能,

    2024年04月16日
    浏览(48)
  • 【粉丝福利社】AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀(文末送书-完结)

    🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:

    2024年02月03日
    浏览(41)
  • 量化交易的优缺点

       量化交易其实就像 《物种起源》 里的物种一样,随着计算机与 智能 机器人的发展 , 投资量化是时代 发展 的必然产物 。 所谓 能者为先 适 者生存,这是 放诸四海 皆为本 的 生存法则 。在 现代 科技欣欣向荣的发展 环境下 , 量化交易 所 表现出 的 种种 优势 , 使 全

    2023年04月08日
    浏览(80)
  • 【粉丝福利社】AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀(文末送书-进行中)

    🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:

    2024年02月04日
    浏览(36)
  • QuantFabric量化交易系统开源发布

    QuantFabric是基于Linux/C++开发的中高频量化交易系统,支持中金所、郑商所、大商所、上期所、上海国际能源中心的期货业务品种交易,支持上交所、深交所的股票、债券品种交易。 QuantFabric目前支持期货交易柜台如下: CTP 盛立REM 易达YD QuantFabric目前支持股票交易柜台如下:

    2024年02月06日
    浏览(27)
  • ChatGPT生成量化交易策略,真好玩

    OK,还有没有更好玩的对 量化策略开发,高质量社群,交易思路分享等相关内容 『正文』 ˇ 最近比较火的OpenAI-ChatGPT,太有意思了。尝试让它写了几个策略,您别说,还真是有模有样。我们来看看吧。 源码: 源码: 源码:   源码: 编写期货收益率预测模型的过程可能比较

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包