C++ 为什么在tablewidget的第一列中设置值时gui崩溃
我的UI中有C++ 为什么在tablewidget的第一列中设置值时gui崩溃,c++,qt,qt5,C++,Qt,Qt5,我的UI中有QTableWidget。第一列是一组QRadioButtons。下面是它的外观: 我已将以下代码添加到主窗口构造函数中: for (char i = 0; i < ui->currentSetting1TableWidget->rowCount(); i++) ui->currentSetting1TableWidget->setCellWidget(i, 0, new QRadioButton(ui->currentSetting
QTableWidget
。第一列是一组QRadioButton
s。下面是它的外观:
我已将以下代码添加到主窗口
构造函数中:
for (char i = 0; i < ui->currentSetting1TableWidget->rowCount(); i++)
ui->currentSetting1TableWidget->setCellWidget(i, 0, new QRadioButton(ui->currentSetting1TableWidget));
我的代码在执行b->setChecked(true)时崩溃代码>。我想这与我没有正确理解在C++
中的强制转换以及Qt
中的cellWidget
返回的确切内容有关。我试图调查,但我看不出问题出在哪里。如果您能在这方面提供帮助,我将不胜感激。对于从QObject
派生的强制类型,请使用/dynamic\u cast
,并检查返回值
您似乎正在第0列中设置单元格小部件,但您正在从第1列访问它。通过查看屏幕截图,它很可能会立即返回nullptr
。对从QObject
派生的强制类型使用/dynamic\u cast
,并检查返回值
您似乎正在第0列中设置单元格小部件,但您正在从第1列访问它。查看屏幕截图后,它很可能会立即返回nullptr
。您是否尝试过调试它以查看是否出现更具体的错误?在尝试调用任何函数之前,您可能还应该检查b
是否指向有效对象。(我建议使用C++样式的C样式转换)qQueNode*b=(qRealButk*)UI -> CurrnStutux1Table WuffGe:CyWiWGET(index .ROW()),1;也许cell小部件不是radiobutton。我会使用QRadioButton*b=qobject\u cast(currentSetting1TableWidget->cellWidget(index.row(),1))
并检查返回的指针是否为nullptr。您是否尝试过调试它以查看是否出现更具体的错误?在尝试调用任何函数之前,您可能还应该检查b
是否指向有效对象。(我建议使用C++样式的C样式转换)qQueNode*b=(qRealButk*)UI -> CurrnStutux1Table WuffGe:CyWiWGET(index .ROW()),1;也许cell小部件不是radiobutton。我将使用QRadioButton*b=qobject\u cast(currentSetting1TableWidget->cellWidget(index.row(),1))
并检查返回的指针是否为null ptr。
void MainWindow::on_currentSetting1TableWidget_clicked(const QModelIndex &index)
{
QRadioButton *b = (QRadioButton *)ui->currentSetting1TableWidget->cellWidget(index.row(), 1);
b->setChecked(true);
}