嵌入式数据库应用程序设计(五)——程序设计

嵌入式数据库应用程序设计(五)——程序设计

本篇函数主要用于实现饼状图

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()
{

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值