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

版权声明:未经允许,不得转载 https://blog.csdn.net/frozennet/article/details/88382205

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

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

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

}

猜你喜欢

转载自blog.csdn.net/frozennet/article/details/88382205