31、QChart、QLineSeries、QValueAxis的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

samp9_1.pro

#-------------------------------------------------
#
# Project created by QtCreator 2017-01-15T01:06:50
#
#-------------------------------------------------

QT       += core gui

QT       += charts


greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = samp9_1
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

1、mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include    <QtCharts>  //必须这么设置

QT_CHARTS_USE_NAMESPACE     //使用宏定义


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

private:
    void    createChart();//

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

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

2、mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

void MainWindow::createChart()
{ //创建图表
    QChartView *chartView=new QChartView(this); //创建 ChartView

    QChart *chart = new QChart(); //创建 Chart
    chart->setTitle("简单函数曲线");

    chartView->setChart(chart); //Chart添加到ChartView
    this->setCentralWidget(chartView);

//创建曲线序列
    QLineSeries *series0 = new QLineSeries();
    QLineSeries *series1 = new QLineSeries();
    series0->setName("Sin曲线");
    series1->setName("Cos曲线");
    chart->addSeries(series0); //序列添加到图表
    chart->addSeries(series1);

//    QPen    pen;
//    pen.setStyle(Qt::DotLine);//Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine
//    pen.setWidth(2);
//    pen.setColor(Qt::red);
//    series0->setPen(pen);

//    pen.setStyle(Qt::SolidLine);//Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine
//    pen.setColor(Qt::blue);
//    series1->setPen(pen);

//序列添加数值
    qreal   t=0,y1,y2,intv=0.1;
    int cnt=100;
    for(int i=0;i<cnt;i++)
    {
        y1=qSin(t);//+qrand();
        series0->append(t,y1);

        y2=qSin(t+20);
        series1->append(t,y2);

        t+=intv;
    }


//    chart->createDefaultAxes();
//    chart->axisX()->setTitleText("time(secs)");
//    chart->axisY()->setTitleText("value");

//创建坐标轴
    QValueAxis *axisX = new QValueAxis; //X 轴
    axisX->setRange(0, 10); //设置坐标轴范围
//    axisX->setLabelFormat("%.1f"); //标签格式
//    axisX->setTickCount(11); //主分隔个数
//    axisX->setMinorTickCount(4);
    axisX->setTitleText("time(secs)"); //标题
//    axisX->setGridLineVisible(false);

    QValueAxis *axisY = new QValueAxis; //Y 轴
    axisY->setRange(-2, 2);
    axisY->setTitleText("value");
//    axisY->setTickCount(5);
//    axisY->setMinorTickCount(4);
//    axisY->setLabelFormat("%.2f"); //标签格式
//    axisY->setGridLineVisible(false);

    chart->setAxisX(axisX, series0); //为序列设置坐标轴
    chart->setAxisY(axisY, series0); //

    chart->setAxisX(axisX, series1); //为序列设置坐标轴
    chart->setAxisY(axisY, series1); //
}

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    createChart();
}

MainWindow::~MainWindow()
{
    delete ui;
}

3、mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>731</width>
    <height>455</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>QChart简单绘图</string>
  </property>
  <widget class="QWidget" name="centralWidget"/>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>731</width>
     <height>23</height>
    </rect>
   </property>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

samp9_2.pro

#-------------------------------------------------
#
# Project created by QtCreator 2016-12-23T00:04:20
#
#-------------------------------------------------

QT       += core gui

QT       += charts

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = samp9_2
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    qwdialogpen.cpp

HEADERS  += mainwindow.h \
    qwdialogpen.h

FORMS    += mainwindow.ui \
    qwdialogpen.ui

RESOURCES += \
    res.qrc

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include    <QMainWindow>

#include    <QtCharts>

QT_CHARTS_USE_NAMESPACE

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

private:
    QLineSeries *curSeries; //当前序列

    QValueAxis *curAxis; //当前坐标轴

    void    createChart(); //创建图表
    void    prepareData(); //更新数据
    void    updateFromChart(); //从图表更新到界面

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

private slots:
    void on_LegendMarkerClicked(); //图例单击

    void on_actDraw_triggered();

    void on_btnSetTitle_clicked();

    void on_btnSetTitleFont_clicked();

    void on_btnSetMargin_clicked();

    void on_chkPointVisible_clicked(bool checked);

    void on_chkPointLabelVisible_clicked(bool checked);

    void on_btnSeriesName_clicked();

    void on_btnSeriesColor_clicked();

    void on_chkLegendVisible_clicked(bool checked);

    void on_btnSetAxisRange_clicked();

    void on_spinTickCount_valueChanged(int arg1);

    void on_spinMinorTickCount_valueChanged(int arg1);

    void on_radioX_clicked();

    void on_radioY_clicked();

    void on_chkGridLineVisible_clicked(bool checked);

    void on_chkMinorTickVisible_clicked(bool checked);

    void on_chkBoxLegendBackground_clicked(bool checked);

    void on_radioButton_clicked();

    void on_radioButton_2_clicked();

    void on_radioButton_3_clicked();

    void on_radioButton_4_clicked();

    void on_btnLegendFont_clicked();

    void on_btnLegendlabelColor_clicked();

    void on_chkBoxVisible_clicked(bool checked);

    void on_btnAxisSetTitle_clicked();

    void on_btnAxisSetTitleFont_clicked();

    void on_chkBoxAxisTitle_clicked(bool checked);

    void on_pushButton_clicked();

    void on_btnAxisLabelColor_clicked();

    void on_btnAxisLabelFont_clicked();

    void on_chkBoxLabelsVisible_clicked(bool checked);

    void on_btnGridLineColor_clicked();

    void on_pushButton_10_clicked();

    void on_chkAxisLineVisible_clicked(bool checked);

    void on_btnAxisLinePen_clicked();

    void on_btnAxisLinePenColor_clicked();

    void on_btnMinorColor_clicked();

    void on_btnMinorPen_clicked();

    void on_radioSeries0_clicked();

    void on_radioSeries1_clicked();

    void on_chkSeriesVisible_clicked(bool checked);

    void on_btnSeriesPen_clicked();

    void on_sliderSeriesOpacity_valueChanged(int value);

    void on_btnSeriesLabColor_clicked();

    void on_btnSeriesLabFont_clicked();

    void on_radioSeriesLabFormat0_clicked();

    void on_radioSeriesLabFormat1_clicked();

    void on_cBoxAnimation_currentIndexChanged(int index);

    void on_cBoxTheme_currentIndexChanged(int index);

    void on_actZoomIn_triggered();

    void on_actZoomOut_triggered();

    void on_actZoomReset_triggered();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include    "qwdialogpen.h"

// 若MSVC 编译版本错误,修改 msvc-version.conf 文件
// 解决MSVC编译时,界面汉字乱码的问题
#if _MSC_VER >= 1600     //MSVC2015>1899,    MSVC_VER= 14.0
#pragma execution_character_set("utf-8")
#endif


void MainWindow::createChart()
{//创建图表的各个部件
    QChart *chart = new QChart();
    chart->setTitle(tr("简单函数曲线"));
//    chart->setAcceptHoverEvents(true);
    ui->chartView->setChart(chart);
    ui->chartView->setRenderHint(QPainter::Antialiasing);

    QLineSeries *series0 = new QLineSeries();
    QLineSeries *series1 = new QLineSeries();
    series0->setName("Sin曲线");
    series1->setName("Cos曲线");

    curSeries=series0; //当前序列

    QPen    pen;
    pen.setStyle(Qt::DotLine);//Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine
    pen.setWidth(2);
    pen.setColor(Qt::red);
    series0->setPen(pen); //折线序列的线条设置

    pen.setStyle(Qt::SolidLine);//Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine
    pen.setColor(Qt::blue);
    series1->setPen(pen);//折线序列的线条设置

    chart->addSeries(series0);
    chart->addSeries(series1);

    QValueAxis *axisX = new QValueAxis;
    curAxis=axisX; //当前坐标轴
    axisX->setRange(0, 10); //设置坐标轴范围
    axisX->setLabelFormat("%.1f"); //标签格式
    axisX->setTickCount(11); //主分隔个数
    axisX->setMinorTickCount(4);
    axisX->setTitleText("time(secs)"); //标题
//    axisX->setGridLineVisible(false);

    QValueAxis *axisY = new QValueAxis;
    axisY->setRange(-2, 2);
    axisY->setTitleText("value");
    axisY->setTickCount(5);
    axisY->setLabelFormat("%.2f"); //标签格式
//    axisY->setGridLineVisible(false);
    axisY->setMinorTickCount(4);

//  下面4行语句在Qt5.12.1里编译时提示过时(deprecated)了,应使用另外一种方法添加坐标轴
//    chart->setAxisX(axisX, series0); //添加X坐标轴
//    chart->setAxisX(axisX, series1); //添加X坐标轴
//    chart->setAxisY(axisY, series0); //添加Y坐标轴
//    chart->setAxisY(axisY, series1); //添加Y坐标轴

//另一种实现设置坐标轴的方法,在Qt 5.12.1里编译时不会提示过时
    chart->addAxis(axisX,Qt::AlignBottom); //坐标轴添加到图表,并指定方向
    chart->addAxis(axisY,Qt::AlignLeft);

    series0->attachAxis(axisX); //序列 series0 附加坐标轴
    series0->attachAxis(axisY);

    series1->attachAxis(axisX);//序列 series1 附加坐标轴
    series1->attachAxis(axisY);


    foreach (QLegendMarker* marker, chart->legend()->markers()) {
        QObject::disconnect(marker, SIGNAL(clicked()), this, SLOT(on_LegendMarkerClicked()));
        QObject::connect(marker, SIGNAL(clicked()), this, SLOT(on_LegendMarkerClicked()));
    }
}

void MainWindow::prepareData()
{//为序列生成数据
    QLineSeries *series0=(QLineSeries *)ui->chartView->chart()->series().at(0);
    QLineSeries *series1=(QLineSeries *)ui->chartView->chart()->series().at(1);

    series0->clear(); //清除数据
    series1->clear();

    qsrand(QTime::currentTime().second());//随机数初始化
    qreal   t=0,y1,y2,intv=0.1;
    qreal   rd;
    int cnt=100;
    for(int i=0;i<cnt;i++)
    {
        rd=(qrand() % 10)-5; //随机数,-5~+5
        y1=qSin(t)+rd/50;
        *series0<<QPointF(t,y1);  //序列添加数据点
//        series0->append(t,y1);  //序列添加数据点

        rd=(qrand() % 10)-5; //随机数,-5~+5
        y2=qCos(t)+rd/50;
//        series1->append(t,y2); //序列添加数据点
        *series1<<QPointF(t,y2); //序列添加数据点

        t+=intv;
    }
}

void MainWindow::updateFromChart()
{ //从图表上获取数据更新界面显示
    QChart  *aChart;
    aChart=ui->chartView->chart();  //获取chart

    ui->editTitle->setText(aChart->title()); //图表标题

    QMargins    mg=aChart->margins(); //边距
    ui->spinMarginLeft->setValue(mg.left());
    ui->spinMarginRight->setValue(mg.right());
    ui->spinMarginTop->setValue(mg.top());
    ui->spinMarginBottom->setValue(mg.bottom());
}

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    createChart();//创建图表
    prepareData();//生成数据
    updateFromChart(); //从图表获得属性值,刷新界面显示
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_LegendMarkerClicked()
{
    QLegendMarker* marker = qobject_cast<QLegendMarker*> (sender());

    switch (marker->type())
    {
        case QLegendMarker::LegendMarkerTypeXY:
        {
            marker->series()->setVisible(!marker->series()->isVisible());
            marker->setVisible(true);
            qreal alpha = 1.0;
            if (!marker->series()->isVisible())
                alpha = 0.5;

            QColor color;
            QBrush brush = marker->labelBrush();
            color = brush.color();
            color.setAlphaF(alpha);
            brush.setColor(color);
            marker->setLabelBrush(brush);

            brush = marker->brush();
            color = brush.color();
            color.setAlphaF(alpha);
            brush.setColor(color);
            marker->setBrush(brush);

            QPen pen = marker->pen();
            color = pen.color();
            color.setAlphaF(alpha);
            pen.setColor(color);
            marker->setPen(pen);
            break;
        }
        default:
            break;
    }


}

void MainWindow::on_actDraw_triggered()
{ //重新生成数据
    prepareData();//重新生成数据
}

void MainWindow::on_btnSetTitle_clicked()
{ //设置图标标题文字
    QString str=ui->editTitle->text();
    ui->chartView->chart()->setTitle(str);
}

void MainWindow::on_btnSetTitleFont_clicked()
{ //设置图标标题文字的字体
    QFont font=ui->chartView->chart()->titleFont();
    bool  ok=false;
    font=QFontDialog::getFont(&ok,font);
    if (ok)
        ui->chartView->chart()->setTitleFont(font);
}

void MainWindow::on_btnSetMargin_clicked()
{//设置图标的4个边距
    QMargins    mgs;
    mgs.setLeft(ui->spinMarginLeft->value());
    mgs.setRight(ui->spinMarginRight->value());
    mgs.setTop(ui->spinMarginTop->value());
    mgs.setBottom(ui->spinMarginBottom->value());
    ui->chartView->chart()->setMargins(mgs);
}

void MainWindow::on_chkPointVisible_clicked(bool checked)
{//序列的数据点是否可见
    curSeries->setPointsVisible(checked);
}

void MainWindow::on_chkPointLabelVisible_clicked(bool checked)
{ //序列的数据点标签是否可见
    curSeries->setPointLabelsVisible(checked);
}

void MainWindow::on_btnSeriesName_clicked()
{ //设置序列名称
    curSeries->setName(ui->editSeriesName->text());
    if (ui->radioSeries0->isChecked())
        ui->radioSeries0->setText(ui->editSeriesName->text());
    else
        ui->radioSeries1->setText(ui->editSeriesName->text());
}

void MainWindow::on_btnSeriesColor_clicked()
{ //序列的曲线颜色
    QColor  color=curSeries->color();

    color=QColorDialog::getColor(color);
    if (color.isValid())
      curSeries->setColor(color);
}

void MainWindow::on_chkLegendVisible_clicked(bool checked)
{//图例是否可见
    ui->chartView->chart()->legend()->setVisible(checked);
}

void MainWindow::on_btnSetAxisRange_clicked()
{ //设置坐标轴的坐标范围
    curAxis->setRange(ui->spinAxisMin->value(),ui->spinAxisMax->value());
}

void MainWindow::on_spinTickCount_valueChanged(int arg1)
{
    curAxis->setTickCount(arg1);
}

void MainWindow::on_spinMinorTickCount_valueChanged(int arg1)
{
    curAxis->setMinorTickCount(arg1);
}

void MainWindow::on_radioX_clicked()
{ //获取当前坐标轴
// 在Qt 5.12.1中编译时提示 QChart::axisX()和QChart::axisY()函数过时,应使用 QChart::axes()函数
//    if (ui->radioX->isChecked())
//        curAxis=(QValueAxis*)ui->chartView->chart()->axisX();
//    else
//        curAxis=(QValueAxis*)ui->chartView->chart()->axisY();

//  下面是针对Qt 5.12.1修改的代码,在Qt5.9.1里编译也没问题
    QList<QAbstractAxis*> axes;
    if (ui->radioX->isChecked())
        axes=ui->chartView->chart()->axes(Qt::Horizontal);
    else
        axes=ui->chartView->chart()->axes(Qt::Vertical);
    curAxis=(QValueAxis*)axes[0];


//获取坐标轴的各种属性,显示到界面上
    ui->spinAxisMin->setValue(curAxis->min());
    ui->spinAxisMax->setValue(curAxis->max());

    ui->editAxisTitle->setText(curAxis->titleText());
    ui->chkBoxAxisTitle->setChecked(curAxis->isTitleVisible());

    ui->editAxisLabelFormat->setText(curAxis->labelFormat());
    ui->chkBoxLabelsVisible->setChecked(curAxis->labelsVisible());

    ui->chkGridLineVisible->setChecked(curAxis->isGridLineVisible());
    ui->chkAxisLineVisible->setChecked(curAxis->isLineVisible());

    ui->spinTickCount->setValue(curAxis->tickCount());
    ui->chkAxisLineVisible->setChecked(curAxis->isLineVisible());

    ui->spinMinorTickCount->setValue(curAxis->minorTickCount());
    ui->chkMinorTickVisible->setChecked(curAxis->isMinorGridLineVisible());
}

void MainWindow::on_radioY_clicked()
{
    on_radioX_clicked();
}

void MainWindow::on_chkGridLineVisible_clicked(bool checked)
{ //轴的网格线是否可见
    curAxis->setGridLineVisible(checked);
}

void MainWindow::on_chkMinorTickVisible_clicked(bool checked)
{ //次级刻度是否可见
    curAxis->setMinorGridLineVisible(checked);
}


void MainWindow::on_chkBoxLegendBackground_clicked(bool checked)
{//图例的背景是否可见
    ui->chartView->chart()->legend()->setBackgroundVisible(checked);
}

void MainWindow::on_radioButton_clicked()
{//图例的位置
    ui->chartView->chart()->legend()->setAlignment(Qt::AlignTop);
}

void MainWindow::on_radioButton_2_clicked()
{//图例的位置
    ui->chartView->chart()->legend()->setAlignment(Qt::AlignBottom);
}

void MainWindow::on_radioButton_3_clicked()
{//图例的位置
    ui->chartView->chart()->legend()->setAlignment(Qt::AlignLeft);
}

void MainWindow::on_radioButton_4_clicked()
{//图例的位置
    ui->chartView->chart()->legend()->setAlignment(Qt::AlignRight);
}

void MainWindow::on_btnLegendFont_clicked()
{ //图例的字体设置
    QFont font=ui->chartView->chart()->legend()->font();
    bool  ok=false;
    font=QFontDialog::getFont(&ok,font);
    if (ok)
        ui->chartView->chart()->legend()->setFont(font);
}

void MainWindow::on_btnLegendlabelColor_clicked()
{//图例的文字颜色设置
    QColor  color=ui->chartView->chart()->legend()->labelColor();
    color=QColorDialog::getColor(color);
    if (color.isValid())
        ui->chartView->chart()->legend()->setLabelColor(color);
}

void MainWindow::on_chkBoxVisible_clicked(bool checked)
{ //坐标轴是否可见
    curAxis->setVisible(checked);
}


void MainWindow::on_btnAxisSetTitle_clicked()
{ //设置坐标轴的标题
    curAxis->setTitleText(ui->editAxisTitle->text());
}

void MainWindow::on_btnAxisSetTitleFont_clicked()
{ //设置坐标轴的标题的字体
    QFont   font=curAxis->titleFont();

    bool    ok=false;
    font=QFontDialog::getFont(&ok,font);
    if (ok)
       curAxis->setTitleFont(font);
}

void MainWindow::on_chkBoxAxisTitle_clicked(bool checked)
{ //轴标题是否可见
    curAxis->setTitleVisible(checked);
}

void MainWindow::on_pushButton_clicked()
{//设置坐标轴刻度标签的文字格式
    curAxis->setLabelFormat(ui->editAxisLabelFormat->text());
}

void MainWindow::on_btnAxisLabelColor_clicked()
{//设置坐标轴刻度标签的文字颜色
    QColor   color=curAxis->labelsColor();

    color=QColorDialog::getColor(color);
    if (color.isValid())
       curAxis->setLabelsColor(color);
}

void MainWindow::on_btnAxisLabelFont_clicked()
{//设置坐标轴刻度标签的文字字体
    QFont   font=curAxis->labelsFont();

    bool    ok=false;
    font=QFontDialog::getFont(&ok,font);
    if (ok)
       curAxis->setLabelsFont(font);
}

void MainWindow::on_chkBoxLabelsVisible_clicked(bool checked)
{//轴的刻度标签是否可见
   curAxis->setLabelsVisible(checked);
}

void MainWindow::on_btnGridLineColor_clicked()
{ //网格线的颜色设置
    QColor   color=curAxis->gridLineColor();

    color=QColorDialog::getColor(color);
    if (color.isValid())
       curAxis->setGridLineColor(color);
}

void MainWindow::on_pushButton_10_clicked()
{ //网格线的Pen设置
    QPen    pen;
    pen=curAxis->gridLinePen();

    bool    ok=false;
    pen=QWDialogPen::getPen(pen,ok);

    if (ok)
      curAxis->setGridLinePen(pen);
}

void MainWindow::on_chkAxisLineVisible_clicked(bool checked)
{//刻度是否可见
    curAxis->setLineVisible(checked);
}

void MainWindow::on_btnAxisLinePen_clicked()
{
    QPen    pen;
    pen=curAxis->linePen();

    bool    ok=false;
    pen=QWDialogPen::getPen(pen,ok);

    if (ok)
      curAxis->setLinePen(pen);
}


void MainWindow::on_btnAxisLinePenColor_clicked()
{
    QColor   color=curAxis->linePenColor();

    color=QColorDialog::getColor(color);
    if (color.isValid())
       curAxis->setLinePenColor(color);
}

void MainWindow::on_btnMinorColor_clicked()
{//次级刻度网格线颜色
    QColor   color=curAxis->minorGridLineColor();

    color=QColorDialog::getColor(color);
    if (color.isValid())
       curAxis->setMinorGridLineColor(color);
}

void MainWindow::on_btnMinorPen_clicked()
{//次级刻度线Pen设置
    QPen    pen;
    pen=curAxis->minorGridLinePen();

    bool    ok=false;
    pen=QWDialogPen::getPen(pen,ok);

    if (ok)
      curAxis->setMinorGridLinePen(pen);
}

void MainWindow::on_radioSeries0_clicked()
{//获取当前数据序列
    if (ui->radioSeries0->isChecked())
        curSeries=(QLineSeries *)ui->chartView->chart()->series().at(0);
    else
        curSeries=(QLineSeries *)ui->chartView->chart()->series().at(1);
//获取序列的属性值,并显示到界面上
    ui->editSeriesName->setText(curSeries->name());
    ui->chkSeriesVisible->setChecked(curSeries->isVisible());
    ui->chkPointVisible->setChecked(curSeries->pointsVisible());
    ui->sliderSeriesOpacity->setValue(curSeries->opacity()*10);
    ui->chkPointLabelVisible->setChecked(curSeries->pointLabelsVisible());
}

void MainWindow::on_radioSeries1_clicked()
{
    on_radioSeries0_clicked();
}


void MainWindow::on_chkSeriesVisible_clicked(bool checked)
{//序列是否可见
    this->curSeries->setVisible(checked);
}

void MainWindow::on_btnSeriesPen_clicked()
{//序列线条的Pen设置
    bool    ok=false;
    QPen    pen;
    pen=curSeries->pen();

    pen=QWDialogPen::getPen(pen,ok);

    if (ok)
      curSeries->setPen(pen);
}

void MainWindow::on_sliderSeriesOpacity_valueChanged(int value)
{//序列的透明度
    curSeries->setOpacity(value/10.0);
}

void MainWindow::on_btnSeriesLabColor_clicked()
{//序列数据点标签颜色
    QColor  color=curSeries->pointLabelsColor();

    color=QColorDialog::getColor(color);
    if (color.isValid())
      curSeries->setPointLabelsColor(color);

}

void MainWindow::on_btnSeriesLabFont_clicked()
{//序列数据点标签字体
    QFont   font;
    font=curSeries->pointLabelsFont();
    bool    ok=false;
    font=QFontDialog::getFont(&ok,font);
    if (ok)
        curSeries->setPointLabelsFont(font);
}

void MainWindow::on_radioSeriesLabFormat0_clicked()
{ //序列数据点标签的显示格式
    curSeries->setPointLabelsFormat("@yPoint");
}

void MainWindow::on_radioSeriesLabFormat1_clicked()
{//序列数据点标签的显示格式
    curSeries->setPointLabelsFormat("(@xPoint,@yPoint)");
}

void MainWindow::on_cBoxAnimation_currentIndexChanged(int index)
{//动画效果
    ui->chartView->chart()->setAnimationOptions(QChart::AnimationOptions(index));
//    ui->chartView->chart()->setAnimationOptions(QChart::SeriesAnimations);
//    ui->chartView->chart()->setAnimationOptions(QChart::AllAnimations);
}


void MainWindow::on_cBoxTheme_currentIndexChanged(int index)
{ //图标的主题
    ui->chartView->chart()->setTheme(QChart::ChartTheme(index));
}

void MainWindow::on_actZoomIn_triggered()
{//放大
    ui->chartView->chart()->zoom(1.2);//zoomIn();
}

void MainWindow::on_actZoomOut_triggered()
{//缩小
    ui->chartView->chart()->zoom(0.8);//zoomOut();
}

void MainWindow::on_actZoomReset_triggered()
{//复位
    ui->chartView->chart()->zoomReset();
}

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>794</width>
    <height>522</height>
   </rect>
  </property>
  <property name="font">
   <font>
    <family>宋体</family>
    <pointsize>10</pointsize>
   </font>
  </property>
  <property name="windowTitle">
   <string>QChart绘图详细功能</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <layout class="QHBoxLayout" name="horizontalLayout">
    <property name="spacing">
     <number>5</number>
    </property>
    <property name="leftMargin">
     <number>5</number>
    </property>
    <property name="topMargin">
     <number>5</number>
    </property>
    <property name="rightMargin">
     <number>5</number>
    </property>
    <property name="bottomMargin">
     <number>5</number>
    </property>
    <item>
     <widget class="QSplitter" name="splitter">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <widget class="QToolBox" name="toolBox">
       <property name="minimumSize">
        <size>
         <width>260</width>
         <height>0</height>
        </size>
       </property>
       <property name="maximumSize">
        <size>
         <width>400</width>
         <height>16777215</height>
        </size>
       </property>
       <property name="frameShape">
        <enum>QFrame::NoFrame</enum>
       </property>
       <property name="currentIndex">
        <number>2</number>
       </property>
       <widget class="QWidget" name="page">
        <property name="geometry">
         <rect>
          <x>0</x>
          <y>0</y>
          <width>400</width>
          <height>388</height>
         </rect>
        </property>
        <attribute name="icon">
         <iconset resource="res.qrc">
          <normaloff>:/images/images/3.ico</normaloff>:/images/images/3.ico</iconset>
        </attribute>
        <attribute name="label">
         <string>图表设置</string>
        </attribute>
        <layout class="QVBoxLayout" name="verticalLayout_5">
         <property name="spacing">
          <number>3</number>
         </property>
         <property name="leftMargin">
          <number>3</number>
         </property>
         <property name="topMargin">
          <number>3</number>
         </property>
         <property name="rightMargin">
          <number>3</number>
         </property>
         <property name="bottomMargin">
          <number>3</number>
         </property>
         <item>
          <widget class="QScrollArea" name="scrollArea_2">
           <property name="widgetResizable">
            <bool>true</bool>
           </property>
           <widget class="QWidget" name="scrollAreaWidgetContents_2">
            <property name="geometry">
             <rect>
              <x>0</x>
              <y>0</y>
              <width>375</width>
              <height>485</height>
             </rect>
            </property>
            <layout class="QVBoxLayout" name="verticalLayout_4">
             <item>
              <widget class="QGroupBox" name="groupBox">
               <property name="title">
                <string>标题</string>
               </property>
               <layout class="QGridLayout" name="gridLayout_2">
                <item row="0" column="0">
                 <widget class="QLineEdit" name="editTitle"/>
                </item>
                <item row="0" column="1">
                 <widget class="QPushButton" name="btnSetTitle">
                  <property name="toolTip">
                   <string>设置标题文字</string>
                  </property>
                  <property name="text">
                   <string>设置</string>
                  </property>
                 </widget>
                </item>
                <item row="1" column="0" colspan="2">
                 <widget class="QPushButton" name="btnSetTitleFont">
                  <property name="text">
                   <string>设置标题字体</string>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_4">
               <property name="title">
                <string>图例</string>
               </property>
               <layout class="QGridLayout" name="gridLayout_9">
                <item row="0" column="0">
                 <widget class="QRadioButton" name="radioButton">
                  <property name="text">
                   <string>上方</string>
                  </property>
                  <property name="checked">
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
                <item row="0" column="1">
                 <widget class="QRadioButton" name="radioButton_2">
                  <property name="text">
                   <string>下方</string>
                  </property>
                 </widget>
                </item>
                <item row="1" column="0">
                 <widget class="QRadioButton" name="radioButton_3">
                  <property name="text">
                   <string>左侧</string>
                  </property>
                 </widget>
                </item>
                <item row="1" column="1">
                 <widget class="QRadioButton" name="radioButton_4">
                  <property name="text">
                   <string>右侧</string>
                  </property>
                 </widget>
                </item>
                <item row="2" column="0">
                 <widget class="QCheckBox" name="chkLegendVisible">
                  <property name="text">
                   <string>图例可见</string>
                  </property>
                  <property name="checked">
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
                <item row="2" column="1">
                 <widget class="QCheckBox" name="chkBoxLegendBackground">
                  <property name="text">
                   <string>背景可见</string>
                  </property>
                 </widget>
                </item>
                <item row="3" column="0">
                 <widget class="QPushButton" name="btnLegendFont">
                  <property name="text">
                   <string>字体</string>
                  </property>
                 </widget>
                </item>
                <item row="3" column="1">
                 <widget class="QPushButton" name="btnLegendlabelColor">
                  <property name="text">
                   <string>标签颜色</string>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_2">
               <property name="title">
                <string>边距</string>
               </property>
               <layout class="QGridLayout" name="gridLayout">
                <item row="0" column="0">
                 <widget class="QLabel" name="label">
                  <property name="text">
                   <string>左边距</string>
                  </property>
                  <property name="alignment">
                   <set>Qt::AlignCenter</set>
                  </property>
                 </widget>
                </item>
                <item row="0" column="1">
                 <widget class="QSpinBox" name="spinMarginLeft">
                  <property name="minimum">
                   <number>10</number>
                  </property>
                  <property name="maximum">
                   <number>500</number>
                  </property>
                 </widget>
                </item>
                <item row="1" column="0">
                 <widget class="QLabel" name="label_2">
                  <property name="text">
                   <string>右边距</string>
                  </property>
                  <property name="alignment">
                   <set>Qt::AlignCenter</set>
                  </property>
                 </widget>
                </item>
                <item row="1" column="1">
                 <widget class="QSpinBox" name="spinMarginRight">
                  <property name="minimum">
                   <number>10</number>
                  </property>
                  <property name="maximum">
                   <number>500</number>
                  </property>
                 </widget>
                </item>
                <item row="2" column="0">
                 <widget class="QLabel" name="label_3">
                  <property name="text">
                   <string>上边距</string>
                  </property>
                  <property name="alignment">
                   <set>Qt::AlignCenter</set>
                  </property>
                 </widget>
                </item>
                <item row="2" column="1">
                 <widget class="QSpinBox" name="spinMarginTop">
                  <property name="minimum">
                   <number>10</number>
                  </property>
                  <property name="maximum">
                   <number>500</number>
                  </property>
                 </widget>
                </item>
                <item row="3" column="0">
                 <widget class="QLabel" name="label_4">
                  <property name="text">
                   <string>下边距</string>
                  </property>
                  <property name="alignment">
                   <set>Qt::AlignCenter</set>
                  </property>
                 </widget>
                </item>
                <item row="3" column="1">
                 <widget class="QSpinBox" name="spinMarginBottom">
                  <property name="minimum">
                   <number>10</number>
                  </property>
                  <property name="maximum">
                   <number>500</number>
                  </property>
                 </widget>
                </item>
                <item row="4" column="0" colspan="2">
                 <widget class="QPushButton" name="btnSetMargin">
                  <property name="text">
                   <string>设置边距</string>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_15">
               <property name="title">
                <string>动画效果</string>
               </property>
               <layout class="QGridLayout" name="gridLayout_10">
                <item row="0" column="0">
                 <widget class="QLabel" name="label_6">
                  <property name="text">
                   <string>动画效果</string>
                  </property>
                  <property name="alignment">
                   <set>Qt::AlignCenter</set>
                  </property>
                 </widget>
                </item>
                <item row="0" column="1">
                 <widget class="QComboBox" name="cBoxAnimation">
                  <item>
                   <property name="text">
                    <string>NoAnimation</string>
                   </property>
                  </item>
                  <item>
                   <property name="text">
                    <string>GridAxisAnimations</string>
                   </property>
                  </item>
                  <item>
                   <property name="text">
                    <string>SeriesAnimations</string>
                   </property>
                  </item>
                  <item>
                   <property name="text">
                    <string>AllAnimations</string>
                   </property>
                  </item>
                 </widget>
                </item>
                <item row="1" column="0">
                 <widget class="QLabel" name="label_8">
                  <property name="text">
                   <string>主  题</string>
                  </property>
                  <property name="alignment">
                   <set>Qt::AlignCenter</set>
                  </property>
                 </widget>
                </item>
                <item row="1" column="1">
                 <widget class="QComboBox" name="cBoxTheme">
                  <item>
                   <property name="text">
                    <string>Light</string>
                   </property>
                  </item>
                  <item>
                   <property name="text">
                    <string>BlueCerulean</string>
                   </property>
                  </item>
                  <item>
                   <property name="text">
                    <string>Dark</string>
                   </property>
                  </item>
                  <item>
                   <property name="text">
                    <string>BrownSand</string>
                   </property>
                  </item>
                  <item>
                   <property name="text">
                    <string>BlueNcs</string>
                   </property>
                  </item>
                  <item>
                   <property name="text">
                    <string>HighContrast</string>
                   </property>
                  </item>
                  <item>
                   <property name="text">
                    <string>BlueIcy</string>
                   </property>
                  </item>
                  <item>
                   <property name="text">
                    <string>Qt</string>
                   </property>
                  </item>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
            </layout>
           </widget>
          </widget>
         </item>
        </layout>
       </widget>
       <widget class="QWidget" name="page_2">
        <property name="geometry">
         <rect>
          <x>0</x>
          <y>0</y>
          <width>400</width>
          <height>388</height>
         </rect>
        </property>
        <attribute name="icon">
         <iconset resource="res.qrc">
          <normaloff>:/images/images/dis3.ico</normaloff>:/images/images/dis3.ico</iconset>
        </attribute>
        <attribute name="label">
         <string>曲线设置</string>
        </attribute>
        <layout class="QVBoxLayout" name="verticalLayout_10">
         <property name="spacing">
          <number>3</number>
         </property>
         <property name="leftMargin">
          <number>3</number>
         </property>
         <property name="topMargin">
          <number>3</number>
         </property>
         <property name="rightMargin">
          <number>3</number>
         </property>
         <property name="bottomMargin">
          <number>3</number>
         </property>
         <item>
          <widget class="QScrollArea" name="scrollArea_3">
           <property name="widgetResizable">
            <bool>true</bool>
           </property>
           <widget class="QWidget" name="scrollAreaWidgetContents_3">
            <property name="geometry">
             <rect>
              <x>0</x>
              <y>0</y>
              <width>375</width>
              <height>400</height>
             </rect>
            </property>
            <layout class="QVBoxLayout" name="verticalLayout_9">
             <item>
              <widget class="QGroupBox" name="groupBox_12">
               <property name="maximumSize">
                <size>
                 <width>16777215</width>
                 <height>60</height>
                </size>
               </property>
               <property name="title">
                <string>选择操作序列</string>
               </property>
               <layout class="QHBoxLayout" name="horizontalLayout_3">
                <item>
                 <widget class="QRadioButton" name="radioSeries0">
                  <property name="text">
                   <string>Sin曲线</string>
                  </property>
                  <property name="checked">
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
                <item>
                 <widget class="QRadioButton" name="radioSeries1">
                  <property name="text">
                   <string>Cos曲线</string>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_13">
               <property name="title">
                <string>曲线外观</string>
               </property>
               <layout class="QGridLayout" name="gridLayout_3">
                <item row="0" column="0">
                 <widget class="QPushButton" name="btnSeriesName">
                  <property name="text">
                   <string>序列名称</string>
                  </property>
                 </widget>
                </item>
                <item row="0" column="1">
                 <widget class="QLineEdit" name="editSeriesName">
                  <property name="text">
                   <string>Sin曲线</string>
                  </property>
                 </widget>
                </item>
                <item row="1" column="0">
                 <widget class="QCheckBox" name="chkSeriesVisible">
                  <property name="text">
                   <string>序列可见</string>
                  </property>
                  <property name="checked">
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
                <item row="1" column="1">
                 <widget class="QCheckBox" name="chkPointVisible">
                  <property name="text">
                   <string>数据点可见</string>
                  </property>
                 </widget>
                </item>
                <item row="2" column="0">
                 <widget class="QPushButton" name="btnSeriesColor">
                  <property name="text">
                   <string>曲线颜色</string>
                  </property>
                 </widget>
                </item>
                <item row="2" column="1">
                 <widget class="QPushButton" name="btnSeriesPen">
                  <property name="text">
                   <string>曲线Pen</string>
                  </property>
                 </widget>
                </item>
                <item row="3" column="0">
                 <widget class="QLabel" name="label_5">
                  <property name="text">
                   <string>透明度</string>
                  </property>
                  <property name="alignment">
                   <set>Qt::AlignCenter</set>
                  </property>
                 </widget>
                </item>
                <item row="3" column="1">
                 <widget class="QSlider" name="sliderSeriesOpacity">
                  <property name="maximum">
                   <number>10</number>
                  </property>
                  <property name="pageStep">
                   <number>2</number>
                  </property>
                  <property name="value">
                   <number>10</number>
                  </property>
                  <property name="orientation">
                   <enum>Qt::Horizontal</enum>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_3">
               <property name="title">
                <string>数据点标签</string>
               </property>
               <layout class="QVBoxLayout" name="verticalLayout_7">
                <item>
                 <widget class="QCheckBox" name="chkPointLabelVisible">
                  <property name="text">
                   <string>数据点标签可见</string>
                  </property>
                 </widget>
                </item>
                <item>
                 <widget class="QPushButton" name="btnSeriesLabColor">
                  <property name="text">
                   <string>标签颜色</string>
                  </property>
                 </widget>
                </item>
                <item>
                 <widget class="QPushButton" name="btnSeriesLabFont">
                  <property name="text">
                   <string>标签字体</string>
                  </property>
                 </widget>
                </item>
                <item>
                 <widget class="QGroupBox" name="groupBox_14">
                  <property name="title">
                   <string>标签格式</string>
                  </property>
                  <layout class="QVBoxLayout" name="verticalLayout_6">
                   <item>
                    <widget class="QRadioButton" name="radioSeriesLabFormat0">
                     <property name="text">
                      <string>@yPoint</string>
                     </property>
                     <property name="checked">
                      <bool>true</bool>
                     </property>
                    </widget>
                   </item>
                   <item>
                    <widget class="QRadioButton" name="radioSeriesLabFormat1">
                     <property name="text">
                      <string>(@xPoint, @yPoint)</string>
                     </property>
                    </widget>
                   </item>
                  </layout>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
            </layout>
           </widget>
          </widget>
         </item>
        </layout>
       </widget>
       <widget class="QWidget" name="page_3">
        <property name="geometry">
         <rect>
          <x>0</x>
          <y>0</y>
          <width>400</width>
          <height>388</height>
         </rect>
        </property>
        <attribute name="icon">
         <iconset resource="res.qrc">
          <normaloff>:/images/images/39.ico</normaloff>:/images/images/39.ico</iconset>
        </attribute>
        <attribute name="label">
         <string>坐标轴设置</string>
        </attribute>
        <layout class="QVBoxLayout" name="verticalLayout_3">
         <property name="spacing">
          <number>3</number>
         </property>
         <property name="leftMargin">
          <number>3</number>
         </property>
         <property name="topMargin">
          <number>3</number>
         </property>
         <property name="rightMargin">
          <number>3</number>
         </property>
         <property name="bottomMargin">
          <number>3</number>
         </property>
         <item>
          <widget class="QScrollArea" name="scrollArea">
           <property name="verticalScrollBarPolicy">
            <enum>Qt::ScrollBarAsNeeded</enum>
           </property>
           <property name="widgetResizable">
            <bool>true</bool>
           </property>
           <widget class="QWidget" name="scrollAreaWidgetContents">
            <property name="geometry">
             <rect>
              <x>0</x>
              <y>-149</y>
              <width>375</width>
              <height>774</height>
             </rect>
            </property>
            <layout class="QVBoxLayout" name="verticalLayout_2">
             <property name="spacing">
              <number>3</number>
             </property>
             <property name="leftMargin">
              <number>3</number>
             </property>
             <property name="topMargin">
              <number>3</number>
             </property>
             <property name="rightMargin">
              <number>3</number>
             </property>
             <property name="bottomMargin">
              <number>3</number>
             </property>
             <item>
              <widget class="QGroupBox" name="groupBox_7">
               <property name="title">
                <string>设置坐标轴对象</string>
               </property>
               <layout class="QHBoxLayout" name="horizontalLayout_2">
                <item>
                 <widget class="QRadioButton" name="radioX">
                  <property name="text">
                   <string>X轴</string>
                  </property>
                  <property name="checked">
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
                <item>
                 <widget class="QRadioButton" name="radioY">
                  <property name="text">
                   <string>Y轴</string>
                  </property>
                  <property name="checked">
                   <bool>false</bool>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_8">
               <property name="title">
                <string>坐标轴总体</string>
               </property>
               <layout class="QGridLayout" name="gridLayout_4">
                <item row="0" column="0">
                 <widget class="QLabel" name="label_7">
                  <property name="text">
                   <string>最小值</string>
                  </property>
                 </widget>
                </item>
                <item row="0" column="1">
                 <widget class="QDoubleSpinBox" name="spinAxisMin">
                  <property name="minimum">
                   <double>-1000.000000000000000</double>
                  </property>
                  <property name="maximum">
                   <double>1000.000000000000000</double>
                  </property>
                 </widget>
                </item>
                <item row="1" column="0">
                 <widget class="QLabel" name="label_11">
                  <property name="text">
                   <string>最大值</string>
                  </property>
                 </widget>
                </item>
                <item row="1" column="1">
                 <widget class="QDoubleSpinBox" name="spinAxisMax">
                  <property name="minimum">
                   <double>-1000.000000000000000</double>
                  </property>
                  <property name="maximum">
                   <double>1000.000000000000000</double>
                  </property>
                  <property name="value">
                   <double>10.000000000000000</double>
                  </property>
                 </widget>
                </item>
                <item row="2" column="0" colspan="2">
                 <widget class="QCheckBox" name="chkBoxVisible">
                  <property name="text">
                   <string>isVisible</string>
                  </property>
                  <property name="checked">
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
                <item row="3" column="0" colspan="2">
                 <widget class="QPushButton" name="btnSetAxisRange">
                  <property name="text">
                   <string>设置坐标范围</string>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_6">
               <property name="title">
                <string>轴标题</string>
               </property>
               <layout class="QGridLayout" name="gridLayout_6">
                <item row="0" column="1" colspan="2">
                 <widget class="QLineEdit" name="editAxisTitle">
                  <property name="text">
                   <string>time(secs)</string>
                  </property>
                 </widget>
                </item>
                <item row="1" column="2">
                 <widget class="QPushButton" name="btnAxisSetTitleFont">
                  <property name="text">
                   <string>设置字体</string>
                  </property>
                 </widget>
                </item>
                <item row="0" column="0">
                 <widget class="QPushButton" name="btnAxisSetTitle">
                  <property name="text">
                   <string>设置标题</string>
                  </property>
                 </widget>
                </item>
                <item row="1" column="0" colspan="2">
                 <widget class="QCheckBox" name="chkBoxAxisTitle">
                  <property name="text">
                   <string>isTitleVisible</string>
                  </property>
                  <property name="checked">
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_10">
               <property name="title">
                <string>轴刻度标签</string>
               </property>
               <layout class="QGridLayout" name="gridLayout_7">
                <item row="0" column="0">
                 <widget class="QPushButton" name="pushButton">
                  <property name="text">
                   <string>标签格式</string>
                  </property>
                 </widget>
                </item>
                <item row="0" column="1">
                 <widget class="QLineEdit" name="editAxisLabelFormat">
                  <property name="text">
                   <string>%.1f</string>
                  </property>
                 </widget>
                </item>
                <item row="1" column="0">
                 <widget class="QPushButton" name="btnAxisLabelColor">
                  <property name="text">
                   <string>文字颜色</string>
                  </property>
                 </widget>
                </item>
                <item row="1" column="1">
                 <widget class="QPushButton" name="btnAxisLabelFont">
                  <property name="text">
                   <string>设置字体</string>
                  </property>
                 </widget>
                </item>
                <item row="2" column="0" colspan="2">
                 <widget class="QCheckBox" name="chkBoxLabelsVisible">
                  <property name="text">
                   <string>labelsVisible</string>
                  </property>
                  <property name="checked">
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_11">
               <property name="title">
                <string>GridLine</string>
               </property>
               <layout class="QVBoxLayout" name="verticalLayout">
                <item>
                 <widget class="QCheckBox" name="chkGridLineVisible">
                  <property name="text">
                   <string>isGridLineVisible</string>
                  </property>
                  <property name="checked">
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
                <item>
                 <widget class="QPushButton" name="btnGridLineColor">
                  <property name="text">
                   <string>gridLineColor</string>
                  </property>
                 </widget>
                </item>
                <item>
                 <widget class="QPushButton" name="pushButton_10">
                  <property name="text">
                   <string>gridLinePen</string>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_9">
               <property name="title">
                <string>Axis and Ticks</string>
               </property>
               <layout class="QGridLayout" name="gridLayout_5">
                <item row="3" column="0" colspan="2">
                 <widget class="QPushButton" name="btnAxisLinePenColor">
                  <property name="text">
                   <string>linePenColor</string>
                  </property>
                 </widget>
                </item>
                <item row="0" column="1">
                 <widget class="QSpinBox" name="spinTickCount">
                  <property name="minimum">
                   <number>1</number>
                  </property>
                  <property name="maximum">
                   <number>1000</number>
                  </property>
                  <property name="value">
                   <number>10</number>
                  </property>
                 </widget>
                </item>
                <item row="1" column="0" colspan="2">
                 <widget class="QCheckBox" name="chkAxisLineVisible">
                  <property name="text">
                   <string>isLineVisible</string>
                  </property>
                  <property name="checked">
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
                <item row="0" column="0">
                 <widget class="QLabel" name="label_9">
                  <property name="text">
                   <string>Tick个数</string>
                  </property>
                  <property name="alignment">
                   <set>Qt::AlignCenter</set>
                  </property>
                 </widget>
                </item>
                <item row="2" column="0" colspan="2">
                 <widget class="QPushButton" name="btnAxisLinePen">
                  <property name="text">
                   <string>linePen</string>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
             <item>
              <widget class="QGroupBox" name="groupBox_5">
               <property name="title">
                <string>MinorTick</string>
               </property>
               <layout class="QGridLayout" name="gridLayout_8">
                <item row="0" column="0">
                 <widget class="QLabel" name="label_10">
                  <property name="text">
                   <string>MinorTick个数</string>
                  </property>
                  <property name="alignment">
                   <set>Qt::AlignCenter</set>
                  </property>
                 </widget>
                </item>
                <item row="0" column="1">
                 <widget class="QSpinBox" name="spinMinorTickCount">
                  <property name="value">
                   <number>4</number>
                  </property>
                 </widget>
                </item>
                <item row="1" column="0" colspan="2">
                 <widget class="QCheckBox" name="chkMinorTickVisible">
                  <property name="text">
                   <string>isMinorGridLineVisible</string>
                  </property>
                 </widget>
                </item>
                <item row="2" column="0" colspan="2">
                 <widget class="QPushButton" name="btnMinorColor">
                  <property name="text">
                   <string>minorGridLineColor</string>
                  </property>
                 </widget>
                </item>
                <item row="3" column="0" colspan="2">
                 <widget class="QPushButton" name="btnMinorPen">
                  <property name="text">
                   <string>minorGridLinePen</string>
                  </property>
                 </widget>
                </item>
               </layout>
              </widget>
             </item>
            </layout>
           </widget>
          </widget>
         </item>
        </layout>
       </widget>
      </widget>
      <widget class="QChartView" name="chartView"/>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <property name="toolButtonStyle">
    <enum>Qt::ToolButtonTextBesideIcon</enum>
   </property>
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
   <addaction name="actDraw"/>
   <addaction name="actZoomIn"/>
   <addaction name="actZoomOut"/>
   <addaction name="actZoomReset"/>
   <addaction name="actQuit"/>
  </widget>
  <action name="actDraw">
   <property name="icon">
    <iconset resource="res.qrc">
     <normaloff>:/images/images/828.bmp</normaloff>:/images/images/828.bmp</iconset>
   </property>
   <property name="text">
    <string>刷新绘图</string>
   </property>
   <property name="toolTip">
    <string>刷新绘图</string>
   </property>
  </action>
  <action name="actQuit">
   <property name="icon">
    <iconset resource="res.qrc">
     <normaloff>:/images/images/132.bmp</normaloff>:/images/images/132.bmp</iconset>
   </property>
   <property name="text">
    <string>退出</string>
   </property>
   <property name="toolTip">
    <string>退出</string>
   </property>
  </action>
  <action name="actZoomIn">
   <property name="icon">
    <iconset resource="res.qrc">
     <normaloff>:/images/images/418.bmp</normaloff>:/images/images/418.bmp</iconset>
   </property>
   <property name="text">
    <string>放大</string>
   </property>
   <property name="toolTip">
    <string>放大</string>
   </property>
  </action>
  <action name="actZoomOut">
   <property name="icon">
    <iconset resource="res.qrc">
     <normaloff>:/images/images/416.bmp</normaloff>:/images/images/416.bmp</iconset>
   </property>
   <property name="text">
    <string>缩小</string>
   </property>
   <property name="toolTip">
    <string>缩小</string>
   </property>
  </action>
  <action name="actZoomReset">
   <property name="icon">
    <iconset resource="res.qrc">
     <normaloff>:/images/images/414.bmp</normaloff>:/images/images/414.bmp</iconset>
   </property>
   <property name="text">
    <string>原始大小</string>
   </property>
   <property name="toolTip">
    <string>还原为原始大小</string>
   </property>
  </action>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <customwidgets>
  <customwidget>
   <class>QChartView</class>
   <extends>QGraphicsView</extends>
   <header location="global">qchartview.h</header>
  </customwidget>
 </customwidgets>
 <resources>
  <include location="res.qrc"/>
 </resources>
 <connections>
  <connection>
   <sender>actQuit</sender>
   <signal>triggered()</signal>
   <receiver>MainWindow</receiver>
   <slot>close()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>-1</x>
     <y>-1</y>
    </hint>
    <hint type="destinationlabel">
     <x>389</x>
     <y>242</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>

qwdialogpen.h

#ifndef QWDIALOGPEN_H
#define QWDIALOGPEN_H

#include    <QDialog>
#include    <QPen>

namespace Ui {
class QWDialogPen;
}

class QWDialogPen : public QDialog
{ //QPen属性设置对话框
    Q_OBJECT
private:
    QPen    m_pen; //成员变量
public:
    explicit QWDialogPen(QWidget *parent = 0);
    ~QWDialogPen();

    void    setPen(QPen pen); //设置QPen,用于对话框的界面显示
    QPen    getPen(); //获取对话框设置的QPen的属性
    static  QPen    getPen(QPen  iniPen, bool &ok);  //静态函数

private slots:
    void on_btnColor_clicked();
private:
    Ui::QWDialogPen *ui;
};

#endif // QWDIALOGPEN_H

qwdialogpen.cpp

#include "qwdialogpen.h"
#include "ui_qwdialogpen.h"

#include    <QColorDialog>

// 若MSVC 编译版本错误,修改 msvc-version.conf 文件
// 解决MSVC编译时,界面汉字乱码的问题
#if _MSC_VER >= 1600     //MSVC2015>1899,    MSVC_VER= 14.0
#pragma execution_character_set("utf-8")
#endif


QWDialogPen::QWDialogPen(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::QWDialogPen)
{
    ui->setupUi(this);

//“线型”ComboBox的选择项设置
    ui->comboPenStyle->clear();
    ui->comboPenStyle->addItem("NoPen",0);
    ui->comboPenStyle->addItem("SolidLine",1);
    ui->comboPenStyle->addItem("DashLine",2);
    ui->comboPenStyle->addItem("DotLine",3);
    ui->comboPenStyle->addItem("DashDotLine",4);
    ui->comboPenStyle->addItem("DashDotDotLine",5);
    ui->comboPenStyle->addItem("CustomDashLine",6);

    ui->comboPenStyle->setCurrentIndex(1);
}

QWDialogPen::~QWDialogPen()
{
    delete ui;
}

void QWDialogPen::setPen(QPen pen)
{ //设置QPen,并刷新显示界面
    m_pen=pen;

    ui->spinWidth->setValue(pen.width()); //线宽
    int i=static_cast<int>(pen.style());  //枚举类型转换为整型
    ui->comboPenStyle->setCurrentIndex(i);

    QColor  color=pen.color();
    ui->btnColor->setAutoFillBackground(true); //设置颜色按钮的背景色
    QString str=QString::asprintf("background-color: rgb(%d, %d, %d);",
                                  color.red(),color.green(),color.blue());
    ui->btnColor->setStyleSheet(str);
}

QPen QWDialogPen::getPen()
{//获得设置的属性
    m_pen.setStyle(Qt::PenStyle(ui->comboPenStyle->currentIndex())); //线型
    m_pen.setWidth(ui->spinWidth->value()); //线宽

    QColor  color;
    color=ui->btnColor->palette().color(QPalette::Button);
    m_pen.setColor(color); //颜色
    return  m_pen;
}

QPen QWDialogPen::getPen(QPen iniPen,bool &ok)
{ //静态函数,获取QPen
    QWDialogPen *Dlg=new QWDialogPen; //创建一个对话框
    Dlg->setPen(iniPen); //设置初始化QPen

    QPen    pen;
    int ret=Dlg->exec(); //弹出对话框
    if (ret==QDialog::Accepted)
    {
        pen=Dlg->getPen(); //获取
        ok=true;    }
    else
    {
        pen=iniPen;
        ok=false;   }

    delete  Dlg; //删除对话框对象
    return  pen; //返回设置的QPen对象
}

void QWDialogPen::on_btnColor_clicked()
{//设置颜色
    QColor  color=QColorDialog::getColor();
    if (color.isValid())
    { //用样式表设置QPushButton的背景色
        QString str=QString::asprintf("background-color: rgb(%d, %d, %d);",
                                      color.red(),color.green(),color.blue());
        ui->btnColor->setStyleSheet(str);
    }
}

qwdialogpen.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>QWDialogPen</class>
 <widget class="QDialog" name="QWDialogPen">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>319</width>
    <height>139</height>
   </rect>
  </property>
  <property name="font">
   <font>
    <family>宋体</family>
    <pointsize>10</pointsize>
   </font>
  </property>
  <property name="windowTitle">
   <string>QPen属性设置对话框</string>
  </property>
  <layout class="QHBoxLayout" name="horizontalLayout">
   <item>
    <widget class="QGroupBox" name="groupBox">
     <property name="title">
      <string>Pen属性设置</string>
     </property>
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>线 型</string>
        </property>
       </widget>
      </item>
      <item row="4" column="2">
       <spacer name="horizontalSpacer_2">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>98</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
      <item row="2" column="2">
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>98</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
      <item row="2" column="1">
       <widget class="QSpinBox" name="spinWidth">
        <property name="minimumSize">
         <size>
          <width>100</width>
          <height>0</height>
         </size>
        </property>
        <property name="minimum">
         <number>1</number>
        </property>
        <property name="maximum">
         <number>100</number>
        </property>
       </widget>
      </item>
      <item row="4" column="0">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>颜 色</string>
        </property>
       </widget>
      </item>
      <item row="2" column="0">
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string>线 宽</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1" colspan="2">
       <widget class="QComboBox" name="comboPenStyle"/>
      </item>
      <item row="1" column="1">
       <spacer name="verticalSpacer">
        <property name="orientation">
         <enum>Qt::Vertical</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
          <height>40</height>
         </size>
        </property>
       </spacer>
      </item>
      <item row="3" column="1">
       <spacer name="verticalSpacer_2">
        <property name="orientation">
         <enum>Qt::Vertical</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
          <height>40</height>
         </size>
        </property>
       </spacer>
      </item>
      <item row="4" column="1">
       <widget class="QPushButton" name="btnColor">
        <property name="autoFillBackground">
         <bool>false</bool>
        </property>
        <property name="styleSheet">
         <string notr="true">background-color: rgb(255, 0, 255);</string>
        </property>
        <property name="text">
         <string/>
        </property>
        <property name="flat">
         <bool>false</bool>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <layout class="QVBoxLayout" name="verticalLayout">
     <item>
      <spacer name="verticalSpacer_5">
       <property name="orientation">
        <enum>Qt::Vertical</enum>
       </property>
       <property name="sizeHint" stdset="0">
        <size>
         <width>20</width>
         <height>40</height>
        </size>
       </property>
      </spacer>
     </item>
     <item>
      <widget class="QPushButton" name="btnOK">
       <property name="text">
        <string>确 定</string>
       </property>
      </widget>
     </item>
     <item>
      <spacer name="verticalSpacer_4">
       <property name="orientation">
        <enum>Qt::Vertical</enum>
       </property>
       <property name="sizeHint" stdset="0">
        <size>
         <width>20</width>
         <height>40</height>
        </size>
       </property>
      </spacer>
     </item>
     <item>
      <widget class="QPushButton" name="btnCancel">
       <property name="text">
        <string>取 消</string>
       </property>
      </widget>
     </item>
     <item>
      <spacer name="verticalSpacer_3">
       <property name="orientation">
        <enum>Qt::Vertical</enum>
       </property>
       <property name="sizeHint" stdset="0">
        <size>
         <width>20</width>
         <height>40</height>
        </size>
       </property>
      </spacer>
     </item>
    </layout>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>btnOK</sender>
   <signal>clicked()</signal>
   <receiver>QWDialogPen</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>337</x>
     <y>51</y>
    </hint>
    <hint type="destinationlabel">
     <x>191</x>
     <y>79</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>btnCancel</sender>
   <signal>clicked()</signal>
   <receiver>QWDialogPen</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>337</x>
     <y>111</y>
    </hint>
    <hint type="destinationlabel">
     <x>191</x>
     <y>79</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>

源码:https://download.csdn.net/download/qq_30457077/85075848

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值