如何在已经创建表格之后的表格上添加与表格中的行相同的行?
在我的应用中,我输入一个vlaue并说值设置了表的行数。在功能中,我将在此处发布与设置TableWidget相关的所有工作。我想要的是,以后使用相同的方法在以后添加新行。意思是,如果我输入“ 3”并生成了3行,如果我也输入新值,我希望能够添加更多行。在我的UI中,我有一个输入值的旋转框,此值基本上是我想要的行数。然后,我单击一个按钮,然后调用此功能。这部分还可以。
void Pressurator::NozzleCount()
{
int nozzleCount = 0;
int index = 0;
nozzleCount = TabUI.nozzlesNum_SB->value();
if(TabUI.tableWidget->rowCount() == 0){
index = 0;
TabUI.tableWidget->setRowCount(nozzleCount);
qDebug()<<"NozzleCount: "<<nozzleCount<<"| Total Rows: "<<TabUI.tableWidget->rowCount();
}else if(TabUI.tableWidget->rowCount() > 0){
TabUI.tableWidget->setRowCount(TabUI.tableWidget->rowCount() + nozzleCount);
index = TabUI.tableWidget->rowCount() - nozzleCount;
qDebug()<<"NozzleCount: "<<nozzleCount<<"| Total Rows: "<<TabUI.tableWidget->rowCount();
qDebug()<<"Index starts at: "<<index;
}
qDebug()<<"CHECK 1";
for(int i=0; i<TabUI.tableWidget->rowCount(); i++){
for(int j=0; j<TabUI.tableWidget->columnCount(); j++){
TabUI.tableWidget->setItem(i,j, new QTableWidgetItem);
}
}
qDebug()<<"CHECK 2";
QLineEdit *lineEdit = new QLineEdit(parent);
// Set validator
QIntValidator *validator = new QIntValidator(0, 9, lineEdit);
lineEdit->setValidator(validator);
QStringList labels = {"Diameter(in)","Area(in²)","Type","Q(gpm)","DP(psi)"};
TabUI.tableWidget->setHorizontalHeaderLabels(labels);
// QHeaderView* header = TabUI.tableWidget->horizontalHeader();
// header->setSectionResizeMode(QHeaderView::Stretch);
qDebug()<<"CHECK 3";
for(int i=0 ; i< nozzleCount; i++)
{
// QDoubleSpinBox * ND_SB = new QDoubleSpinBox;
// QDoubleSpinBox * NA_SB = new QDoubleSpinBox;
QComboBox * nozzleType = new QComboBox;
// ND_SB->setDecimals(5);ND_SB->setRange(0,500);
// NA_SB->setDecimals(5);NA_SB->setRange(0,500);
nozzleType->addItems(nozzleTypesList);
// TabUI.tableWidget->setCellWidget(i,0, ND_SB);
// TabUI.tableWidget->setCellWidget(i,1, NA_SB);
TabUI.tableWidget->setCellWidget(i,2, nozzleType);
qDebug()<<"CHECK 4";
}
qDebug()<<"CHECK 5";
QObject::connect(TabUI.tableWidget, &QTableWidget::itemChanged, this, &Pressurator::CalculateDiameterORArea);
qDebug()<<"CHECK 6";
}
“检查#是我用来追踪我发生的问题的调试消息。每当我尝试在生成表的初始值之后输入新值时,我的应用在第一个循环中崩溃。我尝试插入一个声明该表是否为&gt;如果这样,任何新值都会转化为表末端添加的新行。
In my app I enter a vlaue and said value sets the number of rows to the table. Within the function I will post here I do all the stuff related to setting up the TableWidget. What I want is to to be able to add new rows later on using the same method. Meaning, if I entered '3' and generated 3 rows, I want to be able to add more rows if I enter new values as well. In my UI I have a spin box to which I enter a value, this value is basically how many rows I want. Then I click a button and this function is called. This part is okay.
void Pressurator::NozzleCount()
{
int nozzleCount = 0;
int index = 0;
nozzleCount = TabUI.nozzlesNum_SB->value();
if(TabUI.tableWidget->rowCount() == 0){
index = 0;
TabUI.tableWidget->setRowCount(nozzleCount);
qDebug()<<"NozzleCount: "<<nozzleCount<<"| Total Rows: "<<TabUI.tableWidget->rowCount();
}else if(TabUI.tableWidget->rowCount() > 0){
TabUI.tableWidget->setRowCount(TabUI.tableWidget->rowCount() + nozzleCount);
index = TabUI.tableWidget->rowCount() - nozzleCount;
qDebug()<<"NozzleCount: "<<nozzleCount<<"| Total Rows: "<<TabUI.tableWidget->rowCount();
qDebug()<<"Index starts at: "<<index;
}
qDebug()<<"CHECK 1";
for(int i=0; i<TabUI.tableWidget->rowCount(); i++){
for(int j=0; j<TabUI.tableWidget->columnCount(); j++){
TabUI.tableWidget->setItem(i,j, new QTableWidgetItem);
}
}
qDebug()<<"CHECK 2";
QLineEdit *lineEdit = new QLineEdit(parent);
// Set validator
QIntValidator *validator = new QIntValidator(0, 9, lineEdit);
lineEdit->setValidator(validator);
QStringList labels = {"Diameter(in)","Area(in²)","Type","Q(gpm)","DP(psi)"};
TabUI.tableWidget->setHorizontalHeaderLabels(labels);
// QHeaderView* header = TabUI.tableWidget->horizontalHeader();
// header->setSectionResizeMode(QHeaderView::Stretch);
qDebug()<<"CHECK 3";
for(int i=0 ; i< nozzleCount; i++)
{
// QDoubleSpinBox * ND_SB = new QDoubleSpinBox;
// QDoubleSpinBox * NA_SB = new QDoubleSpinBox;
QComboBox * nozzleType = new QComboBox;
// ND_SB->setDecimals(5);ND_SB->setRange(0,500);
// NA_SB->setDecimals(5);NA_SB->setRange(0,500);
nozzleType->addItems(nozzleTypesList);
// TabUI.tableWidget->setCellWidget(i,0, ND_SB);
// TabUI.tableWidget->setCellWidget(i,1, NA_SB);
TabUI.tableWidget->setCellWidget(i,2, nozzleType);
qDebug()<<"CHECK 4";
}
qDebug()<<"CHECK 5";
QObject::connect(TabUI.tableWidget, &QTableWidget::itemChanged, this, &Pressurator::CalculateDiameterORArea);
qDebug()<<"CHECK 6";
}
The "CHECK # were debug messages I used to trace the problem that occurs for me. My app crashes at the first for loop at the top whenever I try enter a new value after the initial one that generates the table. I tried inserting an if statement that checks the table whether its rows are > 0 or not and if so any new value enter will translate to new rows added at the end of the table.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试一下
Try this