2013-11-30 3 views
3

Недавно я обнаружил, что флажок установлен в середине элемента QtableWidget. Однако, я не знаю, как проверить, нажата ли кнопка. Не могли бы вы рассказать мне, как проверить состояние кнопки?Qt Как проверить состояние флажка в QtableWidget

вот что Ive нашел код:

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); 
+0

любой прогресс на этом? – froderik

ответ

1

Хотя это очень поздно вы можете решить, как это:

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>.

Смежные вопросы