嵌入式数据库应用程序设计(五)——程序设计
本篇函数主要用于实现饼状图
PieWidget.h
#ifndef PIEWIDGET_H
#define PIEWIDGET_H
#include <QtGui>
#include <QWidget>
class PieWidget : public QWidget
{
Q_OBJECT
public:
PieWidget(QWidget *parent=0);
~PieWidget();
protected:
void paintEvent(QPaintEvent *);
};
#endif
PieWidget.cpp
#include "QPainter"
#include "QPaintDevice"
#include "QPaintEvent"
#include "QLabel"
#include "PieWidget.h"
#include "QLabel"
int nRow_sum;
int nRow_little;
int nRow_big;
int nRow_year_sum;
int nRow_year_little;
int nRow_year_big;
PieWidget::PieWidget(QWidget *parent)
: QWidget(parent)
{
//设置饼状图大小
resize(400,500);
char str_1[150];
setWindowTitle(tr("Data PieChart"));
QLabel *label_little=new QLabel;
QLabel *str_little=new QLabel;
//统计Salary(以5000为分界线)
label_little->setText("Salary<5000");
label_little->setGeometry(rect().x()+180,rect().y()+25,200,200);
sprintf(str_1,"%.2lf%s",nRow_little*1.0/nRow_sum*100,"%");
str_little->setText(str_1);
str_little->setGeometry(rect().x()+280,rect().y()+25,200,200);
str_little->setParent(this);
label_little->setParent(this);
QLabel *label_big=new QLabel;
QLabel *str_big=new QLabel;
char str_2[150];
label_big->setText("Salary>=5000");
label_big->setGeometry(rect().x()+180,rect().y()+45,200,200);
sprintf(str_2,"%.2lf%s",nRow_big*1.0/nRow_sum*100,"%");
str_big->setText(str_2);
str_big->setGeometry(rect().x()+280,rect().y()+45,200,200);
str_big->setParent(this);
label_big->setParent(this);
QLabel *label_year_little=new QLabel;
QLabel *str_year_little=new QLabel;
char str_year_1[150];
//统计year(以5为分界线)
label_year_little->setText("SpecialityYear<5");
label_year_little->setGeometry(rect().x()+180,rect().y()+225,200,200);
sprintf(str_year_1,"%.2lf%s",nRow_year_little*1.0/nRow_year_sum*100,"%");
str_year_little->setText(str_year_1);
str_year_little->setGeometry(rect().x()+300,rect().y()+225,200,200);
str_year_little->setParent(this);
label_year_little->setParent(this);
QLabel *label_year_big=new QLabel;
QLabel *str_year_big=new QLabel;
char str_year_2[150];
label_year_big->setText("SpecialityYear>=5");
label_year_big->setGeometry(rect().x()+180,rect().y()+245,200,200);
sprintf(str_year_2,"%.2lf%s",nRow_year_big*1.0/nRow_year_sum*100,"%");
str_year_big->setText(str_year_2);
str_year_big->setGeometry(rect().x()+300,rect().y()+245,200,200);
str_year_big->setParent(this);
label_year_big->setParent(this);
}
void PieWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QLabel label(this);
painter.fillRect(160,120,10,10,Qt::blue);
painter.fillRect(160,140,10,10,Qt::green);
painter.fillRect(160,320,10,10,Qt::yellow);
painter.fillRect(160,340,10,10,Qt::red);
//计算百分比
painter.setBrush(Qt::blue);
painter.drawPie(50,50,100,100,0,16*360*nRow_little/nRow_sum);
painter.setBrush(Qt::green);
painter.drawPie(50,50,100,100,16*360*nRow_little/nRow_sum,16*360*nRow_big/nRow_sum);
painter.setBrush(Qt::yellow);
painter.drawPie(50,250,100,100,0,16*360*nRow_year_little/nRow_year_sum);
painter.setBrush(Qt::red);
painter.drawPie(50,250,100,100,16*360*nRow_year_little/nRow_year_sum,16*360*nRow_year_big/nRow_year_sum);
}
PieWidget::~PieWidget()
{
}