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