1 Star 1 Fork 0

一只路过的小码农/QT工控

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
home.cpp 3.37 KB
一键复制 编辑 原始数据 按行查看 历史
一只路过的小码农 提交于 2024-04-15 13:41 . 首次提交
#include "home.h"
#include "ui_home.h"
Home::Home(QWidget *parent) :
QWidget(parent),
ui(new Ui::Home)
{
ui->setupUi(this);
qvbNames << "日光次数(min)" << "紫外次数(min)" << "日光(hour)" << "紫外次数(hour)";
int i=0;
// 创建 数据集
for (;i<qvbNames.size();i++) {
qvb.push_back(new QBarSet(qvbNames.at(i)));
}
// 监听用户设置数据按钮
connect(ui->pushButton, &QPushButton::clicked, this,[&](){
QString daylightMin = ui->daylightMin->text(); // 日光
QString daylightHv = ui->daylightHv->text();
QString ultravioletMin = ui->ultravioletMin->text(); // 紫外
QString ultravioletHv = ui->ultravioletHv->text();
bool ok; // 判断参数有效性
int tmp;
tmp = daylightMin.toInt(&ok);
if(ok)
*(qvb.at(0)) << tmp; // 将用户输入的值加入集合
else
*(qvb.at(0)) << 0;
tmp = ultravioletMin.toInt(&ok);
if(ok)
*(qvb.at(1)) << tmp; // 将用户输入的值加入集合
else
*(qvb.at(1)) << 0;
tmp = daylightHv.toInt(&ok);
if(ok)
*(qvb.at(2)) << tmp; // 将用户输入的值加入集合
else
*(qvb.at(2)) << 0;
tmp = ultravioletHv.toInt(&ok);
if(ok)
*(qvb.at(3)) << tmp; // 将用户输入的值加入集合
else
*(qvb.at(3)) << 0;
showBar();
emit actionOpt(QString("用户设置 光m=%1 光h=%2 紫m=%3 紫h=%4" )
.arg(daylightMin).arg(daylightHv).arg(ultravioletMin).arg(ultravioletHv));
});
// 默认展示一个空图
showBar();
}
Home::~Home()
{
delete ui;
}
void Home::showBar()
{
int i=0;
QBarSeries *series = new QBarSeries(); // 柱形图
for (i=0;i<qvb.size();i++) {
series->append(qvb.at(i));
}
int min = qvb.size() < 5 ? 6 : qvb.size()+1;
QStringList categories;// 设置y轴名称
for (i=1;i<min;i++) {
categories << QString::number(i);
}
QBarCategoryAxis *axis = new QBarCategoryAxis();
axis->append(categories);
QChart *chart = new QChart();
chart->addSeries(series); // 绘制数据系列
chart->setTitle("光照统计"); // 设置图像标题
chart->setAnimationOptions(QChart::SeriesAnimations); // 在添加或移除数据系列时使用动画效果
chart->createDefaultAxes();//创建默认的左侧的坐标轴(根据 QBarSet 设置的值)
chart->setAxisX(axis, series);//设置坐标轴
chart->legend()->setVisible(true); //设置图例为显示状态
chart->legend()->setAlignment(Qt::AlignBottom);//设置图例的显示位置在底部
QChartView *chartView = new QChartView(chart); // 将图像绘制在qchart控件中
chartView->setRenderHint(QPainter::Antialiasing); // 启用抗锯齿,使得绘制的图形边缘更加平滑和清晰
QVBoxLayout *boxLayout = new QVBoxLayout();
boxLayout->addWidget(chartView);
QLayout *localLayout = ui->widget_2->layout(); // 获取上一次布局
if(localLayout) // 清空布局
{
QVBoxLayout *dboxLayout = (QVBoxLayout *)localLayout; // 获取布局
QChartView *dchartView = (QChartView *)dboxLayout->widget(); // 获取布局加载的空间
delete dchartView;
delete dboxLayout;
}
ui->widget_2->setLayout(boxLayout); // 设置布局
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/YiZhiLuGuoDeXiaoMaNong/qt-industrial-control.git
git@gitee.com:YiZhiLuGuoDeXiaoMaNong/qt-industrial-control.git
YiZhiLuGuoDeXiaoMaNong
qt-industrial-control
QT工控
master

搜索帮助