使用场景
在许多小开发项目中,UI界面不用太复杂,同时只需要简单的人机交互和使用。
实现QTableWidget表格显示
显示效果
实现方式
void MainWindow::initInterface()
{
/* 设置窗口大小 */
this->resize(640,480);
/* 不适用modle的方法直接快速创建一个简单表格 */
/* 这种方式必须先设置表格的行列 */
ui->voltable->setRowCount(8);
ui->voltable->setColumnCount(5);
/* 隐藏左边的表头,默认会显示序号 */
QHeaderView *header1 = ui->voltable->verticalHeader();
header1->setHidden(true);
/* 显示单元格边框 */
ui->voltable->setShowGrid(true);
/* 设置表格内容字体 */
ui->voltable->horizontalHeader()->setFont(QFont("song", 12));
/* 不使用选中高亮 */
ui->voltable->horizontalHeader()->setHighlightSections(false);
/* 设置表头内容 */
QStringList header;
header<<"通道"<<"电压最大值"<<"电压最小值"<<"最大误差"<<"是否合格";
ui->voltable->setHorizontalHeaderLabels(header);
/* 默认显示内容 */
for (int crowCount = 0; crowCount < 8; ++crowCount) {
/* 设置每一行的行高 */
ui->voltable->setRowHeight(crowCount,18);
ui->voltable->setItem(crowCount,0,new QTableWidgetItem("CH"+QString::number(crowCount)));
/* 每一行的内容填充 */
for(int j = 1; j<5; j++ ) {
ui->voltable->setItem(crowCount,j,new QTableWidgetItem(QString::number(j)));
}
}
实现QTableWidget数据更新显示
显示效果
实现方式
①创建一个定时器用于设置数据更新的频率
②获取数据并更新到表格中
mTimer = new QTimer();
connect(mTimer,SIGNAL(timeout()),this,SLOT(updateChartData()));
/* 更新时间1s一次 */
mTimer->start(1000);
void MainWindow::updateChartData()
{
/* 获取数据 */
TestData testChartData = CalRealTime::GetInstance()->getTestData();
for (int crowCount = 0; crowCount < 8; ++crowCount) {
ui->voltable->setRowHeight(crowCount,18);
ui->voltable->setItem(crowCount,0,new QTableWidgetItem("CH"+QString::number(crowCount)));
/* 按照格式填充数据 */
ui->voltable->item(crowCount,0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
ui->voltable->setItem(crowCount,1,new QTableWidgetItem(QString::number(testChartData.max[crowCount],'f',3)));
ui->voltable->item(crowCount,1)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
ui->voltable->setItem(crowCount,2,new QTableWidgetItem(QString::number(testChartData.min[crowCount],'f',3)));
ui->voltable->item(crowCount,2)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
ui->voltable->setItem(crowCount,3,new QTableWidgetItem(QString::number(testChartData.error[crowCount]*100,'f',3)+"%"));
ui->voltable->item(crowCount,3)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
QTableWidgetItem *testResult = new QTableWidgetItem();
testResult->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
/* 设置为ICON显示 */
if (testChartData.qualified[crowCount]) {
testResult->setIcon(*testPassIcon);
} else {
testResult->setIcon(*testWrongIcon);
}
ui->voltable->setItem(crowCount,4,testResult);
}
}