Qt如何在QtableWidget中选中状态复选框 最近,我发现了复选框放置在QTable控件项目中间的方式。 然而,我不知道如何检查按钮是否被点击的状态。 你能告诉我如何检查按钮状态吗

Qt如何在QtableWidget中选中状态复选框 最近,我发现了复选框放置在QTable控件项目中间的方式。 然而,我不知道如何检查按钮是否被点击的状态。 你能告诉我如何检查按钮状态吗,qt,qtablewidget,qtablewidgetitem,qcheckbox,Qt,Qtablewidget,Qtablewidgetitem,Qcheckbox,下面是我发现的代码: QWidget *pWidget = new QWidget(); QCheckBox *pCheckBox = new QCheckBox(); QHBoxLayout *pLayout = new QHBoxLayout(pWidget); pCheckBox->setCheckState(Qt::Checked); pLayout->addWidget(pCheckBox); pLayout->setAlignment(Qt::AlignCenter

下面是我发现的代码:

QWidget *pWidget = new QWidget();
QCheckBox *pCheckBox = new QCheckBox();
QHBoxLayout *pLayout = new QHBoxLayout(pWidget);
pCheckBox->setCheckState(Qt::Checked);
pLayout->addWidget(pCheckBox);
pLayout->setAlignment(Qt::AlignCenter);
pLayout->setContentsMargins(0,0,0,0);
pWidget->setLayout(pLayout);
ui->tableWidget2->setCellWidget(2,2, pWidget);

虽然这已经很晚了,但您可以这样解决:

auto field = ui->tableWidget2->cellWidget(2, 2, pWidget);

std::cout << qobject_cast<QCheckBox*>(field)->isChecked() << std::endl;
int row...;int column...;
...
QTableWidgetItem *checkBoxItem = new QTableWidgetItem();
checkBoxItem->setCheckState(Qt::Unchecked);
ui->Table->setItem(row, column, checkBoxItem);
void MainWindow::on_Table_cellClicked(int row, int column)
{
    QTableWidgetItem *checkBoxState = ui->Table->item(row, column);

    if(ui->Table->item(row,column)->checkState())
    {
        checkBoxState->setCheckState(Qt::Unchecked);
        ui->Table->setItem(row, column, checkBoxState);
    }
    else
    {
        checkBoxState->setCheckState(Qt::Checked);
        ui->Table->setItem(row, column, checkBoxState);
    }
}
auto-field=ui->tableWidget2->cellWidget(2,2,pWidget);

std::cout isChecked()我假设您在QWidgetTable中创建了如下复选框:

auto field = ui->tableWidget2->cellWidget(2, 2, pWidget);

std::cout << qobject_cast<QCheckBox*>(field)->isChecked() << std::endl;
int row...;int column...;
...
QTableWidgetItem *checkBoxItem = new QTableWidgetItem();
checkBoxItem->setCheckState(Qt::Unchecked);
ui->Table->setItem(row, column, checkBoxItem);
void MainWindow::on_Table_cellClicked(int row, int column)
{
    QTableWidgetItem *checkBoxState = ui->Table->item(row, column);

    if(ui->Table->item(row,column)->checkState())
    {
        checkBoxState->setCheckState(Qt::Unchecked);
        ui->Table->setItem(row, column, checkBoxState);
    }
    else
    {
        checkBoxState->setCheckState(Qt::Checked);
        ui->Table->setItem(row, column, checkBoxState);
    }
}
您可以在另一个函数中检查与小部件对应的项目的状态,如下所示:

auto field = ui->tableWidget2->cellWidget(2, 2, pWidget);

std::cout << qobject_cast<QCheckBox*>(field)->isChecked() << std::endl;
int row...;int column...;
...
QTableWidgetItem *checkBoxItem = new QTableWidgetItem();
checkBoxItem->setCheckState(Qt::Unchecked);
ui->Table->setItem(row, column, checkBoxItem);
void MainWindow::on_Table_cellClicked(int row, int column)
{
    QTableWidgetItem *checkBoxState = ui->Table->item(row, column);

    if(ui->Table->item(row,column)->checkState())
    {
        checkBoxState->setCheckState(Qt::Unchecked);
        ui->Table->setItem(row, column, checkBoxState);
    }
    else
    {
        checkBoxState->setCheckState(Qt::Checked);
        ui->Table->setItem(row, column, checkBoxState);
    }
}

这方面有进展吗?等等,为什么要创建一个新的
QTableWIdgetItem
?更改
QTableWIdgetItem*checkBoxState=new QTableWIdgetItem()
QTableWidgetItem*checkBoxState=ui->表格->项目(行、列)
您能告诉我们如何检查复选框或文本字段等包含的单元格类型吗