簡體   English   中英

添加新行時清除C ++ Qt表行

[英]C++ Qt Table Rows Clearing When New Row Added

我正在使用以下代碼創建對象,然后將一行添加到qt表並填充它。 但是,在添加了第一行之后,下次單擊按鈕並添加新行時,除了上面一行的第一列以外,所有其他行都將被清除。

我究竟做錯了什么?

謝謝,

第一次單擊添加行就好了 第一次單擊添加行就好了

第二次單擊清除上面的大部分行 第二次單擊清除上面的大部分行

void MainWindow::on_btnAdd_clicked()
{
Inventory i;
int it = ui->cboItem->itemData(ui->cboItem->currentIndex()).toInt();
double q = ui->spinQnty->value();
int l = ui->cboLoc->itemData(ui->cboLoc->currentIndex()).toInt();

Item item(it);
Location loc(l);

i.insert(it,q,l);
i.setItem(item);
i.setQnty(q);
i.setLoc(loc);

QTableWidgetItem *newItem1 = new QTableWidgetItem(QString::fromStdString(i.getItem().getItem_Name()));
QTableWidgetItem *newItem2 = new QTableWidgetItem(QString::fromStdString(i.getItem().getCategory().getCatName()));
QTableWidgetItem *newItem3 = new QTableWidgetItem(QString::fromStdString(cn.dbl_to_str(i.getQnty())));
QTableWidgetItem *newItem4 = new QTableWidgetItem(QString::fromStdString(i.getLoc().getLocName()));
QTableWidgetItem *newItem5 = new QTableWidgetItem();
newItem5->setData(Qt::UserRole,QVariant(i.getInv_ID()));

QIcon qi;
qi.addFile(QString::fromStdString("red_error_warning_icon.svg"));
newItem5->setIcon(qi);

int j = ui->mainTable->rowCount();

ui->mainTable->insertRow(j);
ui->mainTable->setItem(j,0,newItem1);
ui->mainTable->setItem(j,1,newItem2);
ui->mainTable->setItem(j,2,newItem3);
ui->mainTable->setItem(j,3,newItem4);
ui->mainTable->setItem(j,4,newItem5);
}

我最終創建了一個添加行的函數,以便在程序的其他地方使用它。 我發現在ui文件中打開了列排序功能,這影響了我的商品插入。 這是用於添加行的工作代碼,該代碼在添加項目時會禁用排序。

void MainWindow::addRow(int id)
{
ui->mainTable->setSortingEnabled(false);
Inventory i(id);

QTableWidgetItem *newItem1 = new QTableWidgetItem(QString::fromStdString(i.getItem().getItem_Name()));
QTableWidgetItem *newItem2 = new QTableWidgetItem(QString::fromStdString(i.getItem().getCategory().getCatName()));
QTableWidgetItem *newItem3 = new QTableWidgetItem(QString::fromStdString(cn.dbl_to_str(i.getQnty())));
QTableWidgetItem *newItem4 = new QTableWidgetItem(QString::fromStdString(i.getLoc().getLocName()));
QTableWidgetItem *newItem5 = new QTableWidgetItem();
newItem5->setData(Qt::UserRole,QVariant(i.getInv_ID()));

QIcon qi;
qi.addFile(QString::fromStdString("red_error_warning_icon.svg"));
newItem5->setIcon(qi);

int j = ui->mainTable->rowCount();

ui->mainTable->insertRow(j);
ui->mainTable->setItem(j,0,newItem1);
ui->mainTable->setItem(j,1,newItem2);
ui->mainTable->setItem(j,2,newItem3);
ui->mainTable->setItem(j,3,newItem4);
ui->mainTable->setItem(j,4,newItem5);
ui->mainTable->setSortingEnabled(true);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM