我有一个QTableWidget和一个名为p
的类产品对象。
我想在此表中添加项目。
我尝试了下面的代码,但没有用。
void MainWindow:: add_to_basket (product p){
ui->tableWidget->insertRow(1);
QLineEdit *qle=new QLineEdit();
qle->setText(p.get_name());
ui->tableWidget->setCellWidget(1,1,qle);
QLineEdit *qle1=new QLineEdit();
qle1->setText(QString::number(p.get_price()));
ui->tableWidget->setCellWidget(1,2,qle1);
QSpinBox *qsb=new QSpinBox();
qsb->setValue(p.get_count());
ui->tableWidget->setCellWidget(1,3,qsb);
}
我该怎么办?
答案 0 :(得分:1)
QTableWidget
应该已经定义了rowCount
和columnCount
属性。可以通过QTableWidget
构造函数(https://doc.qt.io/qt-5/qtablewidget.html#QTableWidget-1)或通过适当的方法(setRowCounts
和setColumnCounts
)来完成。如果已经完成,那就太好了。insertRow
在表中给定位置插入一个空行。仅当您先前定义了ui->tableWidget->insertRow(1)
和1
时,rowCount
才会在位置columnCount
处插入新行(请参见第1点)。QSpinBox
试图放入第三列)并插入新产品总是在第一行,满点1的代码可以正常工作。但是,如果您的想法是每次添加新的product
时添加一个新行,则应该调用ui->tableWidget->insertRow(tableWidget->rowCount())
并使用该值来寻址适当的行。您可能还想在这里看看如何设置QTableWidget
:https://wiki.qt.io/How_to_Use_QTableWidget