【Qt5开发及实例】24、数据柱形图显示

这篇博客详细介绍了如何使用Qt5来开发数据柱形图。首先讲解了如何在mainwindow中展示表格数据,接着阐述了在histogramview中绘制条状图的步骤,并在histogramview.cpp中实现具体功能。最后,展示了完成后的效果。
摘要由CSDN通过智能技术生成

数据柱形图显示

1、我们首先把这个这个视图的表格部分表示出来

mainwindow.h

/**
* 书本:【Qt5开发及实例】
* 功能:数据柱形图显示,这个类是表格显示
* 文件:mainwindow.h
* 时间:2015年1月28日18:50:54
* 作者:cutter_point
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QStandardItemModel>
#include <QSplitter>
#include <QMenu>
#include <QMenuBar>
#include <QTableView>
#include <QString>

#include "histogramview.h"

class MainWindow : public QMainWindow
{
  Q_OBJECT

public:
  MainWindow(QWidget *parent = 0);
  ~MainWindow();
  //创建文件里面的打开动作
  void createAction();
  //创建菜单栏
  void createMenu();
  //设置模型
  void setupModel();
  //设置显示视图
  void setupView();
  //读取打开的文件
  void openFile(QString);

public slots:
  //打开文件读取文件的槽函数
  void slotOpen();

private:
  //私有的控件成员
  QMenu *fileMenu;    //文件菜单
  QAction *openAct;   //打开文件事件

  QStandardItemModel *model;      //界面模型
  QTableView *table;    //表格视图
  QSplitter *splitter;      //界面的分割布局

  HistogramView *histogram;

};

#endif // MAINWINDOW_H

mainwindow.cpp

/**
* 书本:【Qt5开发及实例】
* 功能:数据柱形图显示
* 文件:mainwindow.h
* 时间:2015年1月28日18:50:54
* 作者:cutter_point
*/
#include "mainwindow.h"

#include <QFileDialog>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)   //构造函数
  : QMainWindow(parent)
{
  createAction();   //生成相应的事件
  createMenu();   //生成菜单
  setupModel();   //设置模型
  setupView();    //显示视图

  //设置标题和界面大小
  this->setWindowTitle(tr("cutter_point"));
  this->resize(600, 600);
}

MainWindow::~MainWindow()
{

}

//创建文件里面的打开动作
//void createAction();
void MainWindow::createAction()
{
  //创建我们的打开事件
  openAct = new QAction(tr("open"), this);

  //连接上打开文件
  connect(openAct, SIGNAL(triggered()), this, SLOT(slotOpen()));    //点击选择这个事件连接上这个槽函数
}

//创建菜单栏
//void createMenu();
void MainWindow::createMenu()
{
  //设置文件菜单
  fileMenu = new QMenu(tr("file"), this);
  fileMenu->addAction(openAct);   //为这个菜单栏加入一个选项
  this->menuBar()->addMenu(fileMenu);   //加入到主窗口的菜单行中
}

//设置模型
//void setupModel();
void MainWindow::setupModel()
{
  model = new QStandardItemModel(4, 4, this);   //在当前的窗口中创建一个4行4列的标准模型
  //头标题就是4个,部门,男,女,退休
  model->setHeaderData(0, Qt::Horizontal, tr("department"));  //部门
  model->setHeaderData(1, Qt::Horizontal, tr("male"));    //男
  model->setHeaderData(2, Qt::Horizontal, tr("female"));    //女
  model->setHeaderData(3, Qt::Horizontal, tr("retirement"));    //退休
}

//设置显示视图
//void setupView();
void MainWindow::setupView()
{
  //设置好表格视图
  table = new QTableView;
  table->setModel(model);   //设置这个表格视图的模型

  QItemSelectionModel *selectionModel = new QItemSelectionModel(model);
  table->setSelectionModel(selectionModel);

  splitter = new QSplitter;   //分割界面
  splitter->setOrientation(Qt::Vertical);   //垂直分割

//  histogram = new HistogramView;
  histogram = new HistogramView(splitter);

  histogram->setModel(model); //添加到这个模型中

  histogram->setSelectionModel(selectionModel);

  splitter->addWidget(table);
  splitter->addWidget(histogram);

  this->setCentralWidget(splitter);

  connect(selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), table, SLOT(selectionChanged(QItemSelection,QItemSelection)));
  connect(selectionModel, SIGNAL(selectionChanged(QItemSelection,
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值