数据柱形图显示
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,