使用QPainter 画饼图
2014-02-19 14:12
435 查看
具体如图所示:
当单击不同的tab标签时,根据表中的数据显示不同的饼图。
具体部分代码如下所示:
当单击不同的tab标签时,传递标签下面所对应的表格的数据。
当单击不同的tab标签时,根据表中的数据显示不同的饼图。
具体部分代码如下所示:
//根据数据绘制饼图
void ProTeam::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.fillRect(510,420,10,10,Qt::red);
painter.fillRect(510,440,10,10,Qt::blue);
painter.fillRect(510,460,10,10,Qt::yellow);
painter.fillRect(510,480,10,10,Qt::green);
double first=ui->lineFirst->text().toDouble();
double second=ui->lineSecond->text().toDouble();
double third=ui->lineThird->text().toDouble();
double fourth=ui->lineFour->text().toDouble();
double sum=first+second+third+fourth;
QPainter painter2(this);//四种信号量的饼状图绘制
painter2.setBrush(Qt::red);
painter2.setPen(Qt::NoPen);
painter2.drawPie(400,400,100,100,0,360*16*first/sum);
painter2.setBrush(Qt::blue);
painter2.drawPie(400,400,100,100,360*16*first/sum,360*16*second/sum);
painter2.setBrush(Qt::yellow);
painter2.drawPie(400,400,100,100,360*16-360*16*third/sum-360*16*fourth/sum,360*16*third/sum);
painter2.setBrush(Qt::green);
painter2.drawPie(400,400,100,100,360*16-360*16*fourth/sum,360*16*fourth/sum);
}
//当lineEdit框中的内容发生改变时,所画的饼图也跟着改变
void ProTeam::on_lineFirst_textChanged(const QString &arg1)
{
update();
}
void ProTeam::on_lineSecond_textChanged(const QString &arg1)
{
update();
}
void ProTeam::on_lineThird_textChanged(const QString &arg1)
{
update();
}
void ProTeam::on_lineFour_textChanged(const QString &arg1)
{
update();
}
当单击不同的tab标签时,传递标签下面所对应的表格的数据。
void ProTeam::on_tabWidget_tabBarClicked(int index)
{
if(index==0)
{
int row=ui->tableWidget->rowCount()-1;
ui->lineFirst->setText(ui->tableWidget->item(row,3)->text());
ui->lineSecond->setText(ui->tableWidget->item(row,4)->text());
ui->lineThird->setText(ui->tableWidget->item(row,5)->text());
ui->lineFour->setText(ui->tableWidget->item(row,6)->text());
ui->label->setText(codeChange("已完成任务"));
ui->label_2->setText(codeChange("未完成任务"));
ui->label_3->setText(codeChange("过期任务"));
ui->label_4->setText(codeChange("关闭任务"));
}
else if(index==1)
{
int row=ui->tableWidget_2->rowCount()-1;
ui->lineFirst->setText(ui->tableWidget_2->item(row,2)->text());
ui->lineSecond->setText(ui->tableWidget_2->item(row,3)->text());
ui->lineThird->setText(ui->tableWidget_2->item(row,4)->text());
ui->lineFour->setText(ui->tableWidget_2->item(row,5)->text());
ui->label->setText(codeChange("已修正BUG"));
ui->label_2->setText(codeChange("未修正BUG"));
ui->label_3->setText(codeChange("保留BUG"));
ui->label_4->setText(codeChange("关闭BUG"));
}
else if(index==2)
{
int row=ui->tableWidget_3->rowCount()-1;
ui->lineFirst->setText(ui->tableWidget_3->item(row,3)->text());
ui->lineSecond->setText(ui->tableWidget_3->item(row,4)->text());
ui->lineThird->setText(ui->tableWidget_3->item(row,5)->text());
ui->lineFour->setText(ui->tableWidget_3->item(row,6)->text());
ui->label->setText(codeChange("已测试"));
ui->label_2->setText(codeChange("未测试"));
ui->label_3->setText(codeChange("已关闭测试"));
ui->label_4->setText(codeChange("过期测试"));
}
}
//编码转换
QString ProTeam::codeChange(const QByteArray &str){
QTextCodec* codec = QTextCodec::codecForName("gb2312");
QString s;
s = codec->toUnicode(str);
return s;
}
//使表格处于不可编辑状态代码如下:
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
相关文章推荐
- 使用QPainter 画饼图
- QPainter 使用注意事项
- QT中QPainter的使用及矩形、圆形等常见图形的画法
- QT画图教程5:QT中QPainter的使用及矩形、圆形等常见图形的画法
- 使用QPainter、QPainterPath、QRegion绘图实践
- 70-Quartz2D的具体使用(画线,三角形,矩形,圆弧,扇形,重绘(下载提示条),画饼图,定时器(雪花下落),模仿系统的控件,矩形变换)
- 在paintEvent()函数外使用QPainter
- Qt + opencv mat转换成qimage后无法使用qpainter显示
- QT中QPainter的使用及矩形、圆形等常见图形的画法
- 在Qt Widget中使用QPainter之外的引擎进行绘图
- Qt编程21:使用QPainter绘图二
- QT4中QPainter的使用及矩形、圆形等常见图形的画法
- QT使用提升的绘图类问题,画饼图、直方图
- QT中QPainter的使用及矩形、圆形等常见图形的画法
- 使用css3画饼图
- QT使用GDI和OpenGL绘图,相比QPainter绘图降低CPU占用率
- qt中如果使用svg格式的图片在QPainter中绘制图形
- 使用QPainter绘制图形
- 微信小程序 使用canvas画饼图
- 【Qt】使用QPainter的drawPixmap()绘制多幅图片