Qt开源-直方图
程序员文章站
2024-03-19 18:44:04
...
话不多说,先上效果图:
QPainter绘制部分:
QPainter painter(this);
painter.translate(50, this->height() - 50);
painter.rotate(270);
qint16 ny = 0;
for (auto result : m_listAnswerResult) {
// histogram
if (result.correct) {
painter.setPen(QColor(35, 199, 108));
painter.setBrush(QColor(35, 199, 108));
} else {
painter.setPen(QColor(239, 76, 79));
painter.setBrush(QColor(239, 76, 79));
}
ny += kHorizontalSpacing + kHistogramWidth;
if (result.count > 0) {
painter.drawRect(40, ny, result.count * getPerHeightSize(), kHistogramWidth);
}
// choice
painter.save();
QFont choice_font("Microsoft YaHei", 20, 500);
QFontMetrics fm_choice(choice_font);
// choice text width(for align center)
int choice_width = fm_choice.boundingRect(result.choice).width();
int choice_height = fm_choice.boundingRect(result.choice).height();
painter.translate(0, ny + (kHistogramWidth - choice_width) / 2);
painter.rotate(90);
painter.setFont(choice_font);
painter.setPen(QColor(51, 51, 51));
painter.drawText(0, 0, result.choice);
painter.restore();
// count
painter.save();
QFont count_font("Microsoft YaHei", 14, 400);
QFontMetrics fm_count(count_font);
// count text width(for align center)
int text_width = fm_count.boundingRect(QString::number(result.count)).width();
painter.translate(choice_height + result.count * getPerHeightSize() + kCountSpacing, ny + (kHistogramWidth - text_width) / 2);
painter.rotate(90);
painter.setFont(count_font);
painter.setPen(QColor(102,102,102));
painter.drawText(0, 0, QString::number(result.count));
painter.restore();
}
开源代码:
转载请注明出处,谢谢
推荐阅读
-
Qt开源-直方图
-
开源游戏 博客分类: 游戏 ryzommangosTrinityCorepomelo
-
出色的开源项目管理软件——Redmine 博客分类: Ruby 项目管理配置管理RailsRubyPython
-
复工复产的时间内,出现了什么好用的OA? 博客分类: 企业信息化系统 办公OA平台OA办公开源免费
-
企业BI智能大屏,除了页面炫酷,还能带来什么? 博客分类: 企业开发开源软件 .net 快速开发平台 可视化bi开发工具开发平台
-
Java 全功能开源办公软件O2OA V4.2698 稳定版发布 博客分类: 企业信息化系统 OA企业信息化企业办公协同办公开源OA
-
perl升级安装 博客分类: 开源软件Bash ShellLinux命令 perlupdateinstall安装升级
-
log4j 博客分类: 开源框架
-
hanlp粉刺 博客分类: 开源框架 hanlp 分词 词频
-
Qt 批量修改文件名称