如何将QSpinBox添加到QTableWidget



我有一个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);
}

我该怎么办?

  1. QTableWidget应该定义了rowCountcolumnCount属性。可以通过QTableWidget构造函数完成(https://doc.qt.io/qt-5/qtablewidget.html#QTableWidget-1( 或者通过适当的方法(setRowCountssetColumnCounts(。如果已经完成了,那就太好了
  2. insertRow在给定位置向表中插入一个空行。只有在先前定义了rowCountcolumnCount的情况下,ui->tableWidget->insertRow(1)才会在1位置插入新行(请参见第1点(
  3. 这取决于你的想法——如果你想至少有4列(请注意,我们从0开始计数,QSpinBox试图放在第三列(,并始终在第一行插入新产品,那么你的代码在点1满的情况下就可以了。但是,如果您的想法是每次添加新的product时都添加一个新行,那么您应该调用ui->tableWidget->insertRow(tableWidget->rowCount())并使用该值来寻址相应的行

您可能还想看看这里,例如如何设置QTableWidget:https://wiki.qt.io/How_to_Use_QTableWidget

最新更新