QChartView绘制可缩放和平移的图表QChart(此例子为折线图)

histogramWidget.h头文件

#pragma once
#include <qwidget.h>
#include <qgridlayout.h>
#include <QtCharts/qchartview.h>
#include <QtCharts/qlineseries.h>
#include <QGraphicsSimpleTextItem>

QT_CHARTS_USE_NAMESPACE    //QtChart名空间

//QChartView用与显示QChart图表
class ChartView : public QChartView
{
   
public:
	explicit ChartView(QChart *chart, int num, int RCount1[256] = {
    0 }, int GCount1[256] = {
    0 }, int BCount1[256] = {
    0 }, QWidget *parent = nullptr);
	~ChartView();
	// 保存坐标区域,用于复位
	void saveAxisRange();

protected:
	void mousePressEvent(QMouseEvent *event);
	void mouseMoveEvent(QMouseEvent *event);
	void mouseReleaseEvent(QMouseEvent *event);
	void wheelEvent(QWheelEvent *event);

private:
	int RCount[256];
	int GCount[256];
	int BCount[256];
	int channelNum;

	QPoint m_lastPoint;
	bool m_isPress = false;
	bool m_alreadySaveRange = false;
	double m_xMin, m_xMax, m_yMin, m_yMax;
	QGraphicsSimpleTextItem *m_coordItem;
};

class pixelsHistogram : public QWidget
{
   
public:
	pixelsHistogram(int Count[256]);
	pixelsHistogram(int RCount[256], int GCount[256], int BCount[256]);
	~pixelsHistogram();

protected:
	void createChart(int Count[256]);
	void createChart(int RCount[256], int GCount[256], int BCount[256]);

private:
	QList<QLineSeries *> m_series;
	QChart *chart;
	ChartView *chartView;
};


//void showRGBHistogram(int RCount[256], int GCount[256], int BCount[256])
//{
   
//	QWidget *histogramWidget = new QWidget();
//
//	QList<QLineSeries *> m_series; 
//	QLineSeries *Rseries = new QLineSeries();
//	QLineSeries *Gseries = new QLineSeries();
//	QLineSeries *Bseries = new QLineSeries();
//	m_series.append(Rseries);
//	m_series.append(Gseries);
//	m_series.append(Bseries);
//
//	Rseries->setName("CH3");
//	Gseries->setName("CH2");
//	Bseries->setName("CH1");
//
//	Rseries->setColor(QColor(255, 0, 0));
//	Gseries->setColor(QColor(0, 255, 0));
//	Bseries->setColor(QColor(0, 0, 255));
//
//	//设置线条可视
//	Rseries->setVisible(true);
//	Gseries->setVisible(true);
//	Bseries->setVisible(true);
//
//	//添加坐标点
//	for (int i = 0; i < 256; i++)
//	{
   
//		Rseries->append(i, RCount[i]);
//		Gseries->append(i, GCount[i]);
//		Bseries->append(i, BCount[i]);
//	}
//
//	QChart *chart = new QChart();
//	chart->setTheme(QChart::ChartThemeBlueCerulean);//设置系统主题
//	//chart->setBackgroundBrush(QBrush(QColor(170,170,255)));//设置背景色,主题和背景二选一 
//	//chart->setDropShadowEnabled(true);//是否背景阴影
//	chart->setLocalizeNumbers(true);//数字是否本地化
//	//chart->legend()->show();//legend是否显示,show和hide
//	chart->addSeries(Rseries);
//	chart->addSeries(Gseries);
//	chart->addSeries(Bseries);
//	chart->createDefaultAxes();//创建默认轴
//	chart->setTitle("Histogram");//设置标题
//	chart->setTitleBrush(QBrush(QColor(255, 170, 255)));//设置标题Brush
//	chart->setTitleFont(QFont("微软雅黑"));//设置标题字体
//
//	//chart->legend()->setVisible(true);
//	//chart->legend()->setAlignment(Qt::AlignBottom);//底部对齐
//	//chart->legend()->setBackgroundVisible(true);//设置背景是否可视
//	//chart->legend()->setLabelColor(QColor(255, 128, 255));//设置标签颜色
//	//chart->legend()->setVisible(true);//设置是否可视
//	//chart->legend()->setBorderColor(QColor(255, 255, 170, 185));//设置边框颜色
//
//	QChartView *chartView = new QChartView(chart);
//	chartView->setRenderHint(QPainter::Antialiasing);
//
//	QGridLayout *mainLayout = new QGridLayout;
//	mainLayout->addWidget(chartView);
//	histogramWidget->setLayout(mainLayout);
//	histogramWidget->resize(960, 720);
//	histogramWidget->setWindowTitle("Histogram");
//	histogramWidget->setWindowModality(Qt::WindowModal);
//	histogramWidget->show();
//}
//
//void showGrayScaleHistogram(int Count[256])
//{
   
//	QWidget *histogramWidget = new QWidget();
//
//	QList<QLineSeries *> m_series;
//	QLineSeries *series = new QLineSeries();
//	m_series.append(series);
//
//	series->setName("CH1");
//
//	series->setColor(QColor(0, 0, 0));
//
//	//设置线条可视
//	series->setVisible(true);
//
//	//添加坐标点
//	for (int i = 0; i < 256; i++)
//	{
   
//		series->append(i, Count[i]);
//	}
//
//	QChart *chart = new QChart();
//	chart->setTheme(QChart::ChartThemeBlueCerulean);//设置系统主题
//	//chart->setBackgroundBrush(QBrush(QColor(170,170,255)));//设置背景色,主题和背景二选一 
//	//chart->setDropShadowEnabled(true);//是否背景阴影
//	chart->setLocalizeNumbers(true);//数字是否本地化
//	//chart->legend()->show();//legend是否显示,show和hide
//	chart->addSeries(series);
//	chart->createDefaultAxes();//创建默认轴
//	chart->setTitle("Histogram");//设置标题
//	//chart->setTitleBrush(QBrush(QColor(255, 170, 255)));//设置标题Brush
//	chart->setTitleFont(QFont("微软雅黑"));//设置标题字体
//
//	//chart->legend()->setVisible(true);
//	//chart->legend()->setAlignment(Qt::AlignBottom);//底部对齐
//	//chart->legend()->setBackg
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值