公司产品涉及到QT 3D模块,但是在应用时遇到一个Dialog无响应的问题。关键代码如下:
void MainWindow::newWidget()
{
QWidget *pWidget = new QWidget(this);
MyDialog myDlg;
myDlg->addWidget(pWidget, this);
myDlg.show();
}
//MyDialog中还有其他控件
void MyDialog::addWidget(QWidget *pWidget, QWidget *pParent)
{
setParent(pParent);
ui->layout()->addWidget(pWidget);
}
解决的方法就是:
QWidget *pWidget = new QWidget(this);
改为:
QWidget *pWidget = new QWidget();
具体原因暂时还没有查清,需要查看QT 3D模块的代码。值得学习的地方是同事定位缺陷的办法,他猜测是MyDialog中的某个控件导致了该问题,然后就一个个移除相关的控件,来定位到引起缺陷的控件。