qt charts

mainwindow.cpp:
#include "mainwindow.h"
#include <QDebug>
#include <QHeaderView>
#include <QLayout>
#include <QTableView>
#include <QDialog>
#include <QDateTimeAxis>
#include <QLegend>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)

{
    this->setFixedSize(800, 600);
    QWidget *widget = new QWidget(this);
    this->setCentralWidget(widget);
    QVBoxLayout *lay = new QVBoxLayout(this);

    QStringList headitems = {"测试1", "测试2", "测试3", "测试4"};
    QTableView *m_table = new QTableView(this);

    m_dialog = new QDialog();
    m_dialog->setFixedSize(600, 500);
    m_dialog->setWindowTitle("不同端口CPK");

    // 表头设置
    m_table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);  // 自适应所有列,让它布满整个空间
    m_table->horizontalHeader()->setDefaultSectionSize(48);
    m_table->horizontalHeader()->setFixedHeight(35);  // 设置表头的高度为25

    m_table->setEditTriggers(QAbstractItemView::NoEditTriggers);
    //  m_table->setSelectionBehavior(QAbstractItemView::SelectRows);
    m_table->verticalHeader()->setVisible(false);
    // 隔行变色
    m_table->setAlternatingRowColors(true);
    // m_table->setRowHeight(0,30);
    model.setHorizontalHeaderLabels(headitems);

    // QList<QStandardItem *> list;
    model.setColumnCount(4);
    model.setRowCount(3);
    for (int row = 0; row < model.rowCount(); ++row) {
        for (int column = 0; column < model.columnCount(); ++column) {
            QStandardItem *item = new QStandardItem("test" + QString("%1%2").arg(row).arg(column));
            model.setItem(row, column, item);
        }
    }
    // model.appendRow(list);

    m_table->setModel(&model);
    lay->addWidget(m_table);
    widget->setLayout(lay);

    connect(m_table->horizontalHeader(), &QHeaderView::sectionDoubleClicked, this, &MainWindow::headerclicked);
}

MainWindow::~MainWindow() {}

void MainWindow::headerclicked(int logicalIndex) {
    QStandardItem *item = model.horizontalHeaderItem(logicalIndex);
    qDebug() << "index:" << item->text() << endl;
    // 根据表头测试项找出不同端口cpk分布,绘制趋势图

    int teamp_data[] = {32, 31, 30, 30, 31, 32, 32, 32, 32, 32, 32, 31, 31, 31, 31, 30, 30, 31, 32, 32, 33, 33, 30, 30, 30, 30, 31, 31, 31, 33};
    QLineSeries *series = new QLineSeries();
    m_chart = new QChart();

    // x,y轴
    auto axisX = new QValueAxis();
    auto axisY = new QValueAxis();

    QDateTime TimeMin;
    QDateTime TimeMax;

    m_chart->addAxis(axisX, Qt::AlignBottom);
    m_chart->addAxis(axisY, Qt::AlignLeft);

    m_chart->setTitle("测试项1各端口cpk");
    m_chart->legend()->setWindowTitle("CPK1");
    m_chart->legend()->setBackgroundVisible(true);
    m_chart->legend()->setGeometry(QRectF(30, 120, 30, 120));
    m_chart->legend()->setVisible(true);
    m_chart->legend()->setAlignment(Qt::AlignBottom);

    axisX->setRange(0, 30);
    axisY->setRange(28, 35);
    axisX->setTickCount(5);

    // 数据
    QDateTime Time;
    for (int i = 0; i < sizeof(teamp_data) / sizeof(teamp_data[0]); i++) {
        series->append(i, teamp_data[i]);
    }

    m_chart->addSeries(series);
    auto chartView = new QChartView(m_chart);
    chartView->setRenderHint(QPainter::Antialiasing);

    QVBoxLayout *box = new QVBoxLayout();
    box->addWidget(chartView);
    m_dialog->setLayout(box);
    m_dialog->show();
}

 

mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QStandardItemModel>
#include <QtCharts>

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

    QStandardItemModel model;

    QDialog *m_dialog;
    QChart *m_chart;

private slots:
    void headerclicked(int logicalIndex);
};

#endif  // MAINWINDOW_H

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值