生成一个表格,修改表格内值来改变系统参数。
tb_Eps = new QTableWidget(4, 3);//表格为4*3
//使表格平铺在界面
tb_Eps-> horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//
tb_Eps->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
//设置表头
QStringList header;
header << QStringLiteral("误差类型") << QStringLiteral("默认值") << QStringLiteral("修改值");
tb_Eps->setHorizontalHeaderLabels(header);
tb_Eps->setItem(0, 0, new QTableWidgetItem("CEpsilonU"));
tb_Eps->setItem(1, 0, new QTableWidgetItem("CTASEpsilonU"));
tb_Eps->setItem(2, 0, new QTableWidgetItem("CAreaEpsilonU"));
tb_Eps->setItem(3, 0, new QTableWidgetItem("CPerimeterEpsilonU"));
error_init();//初始化默认值
tb_Eps->setItem(0, 2, new QTableWidgetItem(str_CEpsilonU));
tb_Eps->setItem(1, 2, new QTableWidgetItem(str_CTASEpsilonU));
tb_Eps->setItem(2, 2, new QTableWidgetItem(str_CAreaEpsilonU));
tb_Eps->setItem(3, 2, new QTableWidgetItem(str_CPerimeterEpsilonU));
//将前两列设置为灰色不可修改 flag :0为灰色不可修改
for (int i = 0; i != 4; i++)
for (int j = 0; j != 2; j++)
{
tb_Eps->item(i, j)->setFlags(0);
}
hLayout5->addWidget(tb_Eps);
//singal参数只写类型
//itemChanged当数据发生改变时候触发
connect(tb_Eps, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(on_itemChanged(QTableWidgetItem *)));
//对应的槽函数
void TASAttrCompareMainFrm::on_itemChanged(QTableWidgetItem *item)
{
if (item->text().toDouble() <= 0)
{
item->setBackground(QBrush(QColor(255, 0, 0)));//设置表格颜色
return;
}
item->setBackground(QBrush(QColor(0, 255, 0)));
switch (item->row())
{
case 0:
CEpsilonU = item->text().toDouble();
break;
case 1:
CTASEpsilonU= item->text().toDouble();
break;
case 2:
CAreaEpsilonU= item->text().toDouble();
break;
case 3:
CPerimeterEpsilonU= item->text().toDouble();
break;
default:
break;
}
}
QString tabeDate[table->rowCount()][table->clomnCount()];
for(int i=0; i<table->rowCount(); i++)
{
for(int j=0; j<table->clomnCount(); j++)
{
tabeDate[i][j] = table->item(i, j)->text();
}
}