如何将QSpinBox添加到QTableWidget?

时间:2020-07-23 06:07:38

标签: 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->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 个答案:

答案 0 :(得分:1)

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

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

相关问题