最近发现checkbox放在QtableWidget item中间的方法。 但是,我不知道如何检查按钮是否被点击的状态。 你能告诉我如何检查按钮状态吗?
这是我找到的代码:
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;
这也适用于其他类型(QComboBox 等)。尽管使用 QTableWidgetItem
的复选框功能可能会更好已经有了。
如果您使用三态复选框,此示例可能无法运行,在这种情况下您应该调用:checkState()
并将其与 Qt::CheckState
进行比较.如果qobject_cast<T>
不行你可以用reinterpret_cast<T>
.
关于Qt如何检查QtableWidget中的状态复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20297158/