Qt 和 C++ 实现数据统计报表表格展示
以下使用 Qt 和 C++ 实现的代码示例,展示如何使用表格布局将数据统计报表展现出来:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget window;
QVBoxLayout *layout = new QVBoxLayout(&window);
// 创建常规表格
QGroupBox *generalGroupBox = new QGroupBox('常规');
QVBoxLayout *generalLayout = new QVBoxLayout(generalGroupBox);
QFormLayout *generalFormLayout = new QFormLayout;
generalFormLayout->addRow('名称:', new QLabel('xxx.pkt(后缓可改)'));
generalFormLayout->addRow('长度:', new QLabel('XXMB'));
generalFormLayout->addRow('类型:', new QLabel('1553B'));
generalFormLayout->addRow('发送/接收:', new QLabel('1122'));
generalFormLayout->addRow('协议:', new QLabel('xxx'));
generalFormLayout->addRow('协议速率:', new QLabel('2.5Gbps'));
generalFormLayout->addRow('理论带宽比:', new QLabel('10%'));
generalFormLayout->addRow('信用值使能和禁止状态:', new QLabel('使能'));
generalFormLayout->addRow('发送板卡:', new QLabel('ddd'));
generalFormLayout->addRow('发送ID:', new QLabel('aa00'));
generalFormLayout->addRow('目标ID:', new QLabel('dd00'));
generalFormLayout->addRow('是否压缩(可删):', new QLabel('否'));
generalLayout->addLayout(generalFormLayout);
layout->addWidget(generalGroupBox);
// 创建时间表格
QGroupBox *timeGroupBox = new QGroupBox('时间');
QVBoxLayout *timeLayout = new QVBoxLayout(timeGroupBox);
QFormLayout *timeFormLayout = new QFormLayout;
timeFormLayout->addRow('开始时间:', new QLabel);
timeFormLayout->addRow('最后时间:', new QLabel);
timeFormLayout->addRow('经过时间:', new QLabel);
timeLayout->addLayout(timeFormLayout);
layout->addWidget(timeGroupBox);
// 创建统计表格
QGroupBox *statGroupBox = new QGroupBox('统计');
QVBoxLayout *statLayout = new QVBoxLayout(statGroupBox);
QGridLayout *statGridLayout = new QGridLayout;
statGridLayout->addWidget(new QLabel('发送'), 0, 0);
statGridLayout->addWidget(new QLabel('接收'), 0, 1);
statGridLayout->addWidget(new QLabel('字节数'), 1, 0);
statGridLayout->addWidget(new QLabel('帧数'), 2, 0);
statGridLayout->addWidget(new QLabel('平均 MB/s'), 3, 0);
statGridLayout->addWidget(new QLabel('收/发报文数'), 4, 0);
statGridLayout->addWidget(new QLabel('发送定制错误报文数'), 5, 0);
statGridLayout->addWidget(new QLabel('帧错误个数'), 6, 0);
statGridLayout->addWidget(new QLabel('帧错误类型统计'), 7, 0);
statGridLayout->addWidget(new QLabel('CRC错误统计'), 7, 1);
statGridLayout->addWidget(new QLabel('超长帧统计'), 8, 1);
statGridLayout->addWidget(new QLabel('超短帧统计'), 9, 1);
statGridLayout->addWidget(new QLabel('定界符错误统计'), 10, 1);
statGridLayout->addWidget(new QLabel('极性错误统计'), 11, 1);
statGridLayout->addWidget(new QLabel('数量'), 8, 0);
statGridLayout->addWidget(new QLabel('帧错误率'), 9, 0);
statLayout->addLayout(statGridLayout);
layout->addWidget(statGroupBox);
window.setLayout(layout);
window.show();
return app.exec();
}
这段代码使用 Qt 的布局管理器创建了一个窗口,并在窗口中使用 QGroupBox、QFormLayout 和 QGridLayout 实现表格布局。其中,常规表格使用了 QFormLayout,时间表格也使用了 QFormLayout,统计表格使用了 QGridLayout。通过调用 addWidget 函数将表格添加到布局中,并最终将布局设置给窗口对象。最后,调用 app.exec() 进入 Qt 的事件循环,显示窗口。
原文地址: https://www.cveoy.top/t/topic/pd19 著作权归作者所有。请勿转载和采集!