如何将 QSpinBox 添加到 QTableWidget?

how to add QSpinBox to a QTableWidget?

我有一个 QTableWidget 和一个名为 p 的 class 产品对象。 我想向此 table 添加项目。 我尝试了下面的代码但没有用。

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 在给定位置的 table 中插入一个空行。 ui->tableWidget->insertRow(1) 仅当您之前定义了 rowCountcolumnCount 时才会在位置 1 插入一个新行(参见第 1 点)。
  3. 这取决于您的想法 - 如果您希望至少有 4 列(请注意我们从 0 开始计数并且 QSpinBox 试图放入第三列)并插入新产品总是在第一行,你的第 1 点 fullfilled 的代码可以正常工作。但是,如果您的想法是每次添加新 product 时都添加一个新行,您应该调用 ui->tableWidget->insertRow(tableWidget->rowCount()) 并使用该值来寻址适当的行。

您可能还想在这里查看如何设置 QTableWidgethttps://wiki.qt.io/How_to_Use_QTableWidget