Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么在tablewidget的第一列中设置值时gui崩溃_C++_Qt_Qt5 - Fatal编程技术网

C++ 为什么在tablewidget的第一列中设置值时gui崩溃

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

我的UI中有
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);
}