如何将QSpinBox添加到QTableWidget?
我有一个QTableWidget和一个名为如何将QSpinBox添加到QTableWidget?,qt,qwidget,qtablewidget,qlineedit,qspinbox,Qt,Qwidget,Qtablewidget,Qlineedit,Qspinbox,我有一个QTableWidget和一个名为p的产品类对象。 我想在这个表中添加项目。 我尝试了下面的代码,但没有用 void MainWindow:: add_to_basket (product p){ ui->tableWidget->insertRow(1); QLineEdit *qle=new QLineEdit(); qle->setText(p.get_name()); ui->tableWidget->setCel
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);
}
我该怎么办
QTableWidget
应该定义rowCount
和columnCount
属性。它可以通过QTableWidget
constructor()或通过适当的方法(setRowCounts
和setColumnCounts
)完成。如果已经完成了,那就太好了insertRow
在给定位置将空行插入表中ui->tableWidget->insertRow(1)
仅当您之前定义了rowCount
和columnCount
时,才会在位置1
插入新行(参见第1点)QSpinBox
放入第三列)并始终在第一行插入新产品,则您的代码第1点已完全填充将可以正常工作。但是,如果您的想法是在每次添加新的产品时添加新行,那么您应该调用ui->tableWidget->insertRow(tableWidget->rowCount())
,并使用该值来寻址相应的行
您可能还想看看这里,例如如何设置
QTableWidget
:您正在插入到一个空表中的不存在的位置。Qt使用基于0的索引,因此尝试在空表中的位置1插入行将失败。另外,您确定已将表设置为具有足够的列吗?对于当前代码,它需要有4列。我建议您将当前行数存储在常量变量行
,然后调用insertRow(row)
,并对setCellWidget调用使用相同的行
变量。