CTCameraAngleWidget.cpp
声明:
extern CTCalibrationDialog *g_alignmentDialog;
实例化中的部分代码:
if (g_alignmentDialog == NULL) {
EL4A_INFO(CTUI, "g_alignmentDialog:NULL");
}
bool testFlag = connect(g_alignmentDialog, &CTCalibrationDialog::signalSaveCalibration, this, &CTCameraAngleWidget::slotSaveCalibration);
EL4A_INFO(CTUI, "testFlag:%d", testFlag);
问题背景描述
1 CTCalibrationDialog类中有一个tabwiget控件,CTCameraAngleWidget是其中的一个标签页。
2 在CTCalibrationDialog类中定义的信号
3 在CTCameraAngleWidget类中定义的槽函数。
4 在CTCameraAngleWidget中声明了extern的CTCalibrationDialog全局对象。
问题
测试发现CTCameraAngleWidget中定义的槽函数没有调用到,无效。
检查
1 检查connect的testFlag ,发现为false。
2 检查全局对象g_alignmentDialog,发现为NULL。
3 检查CTCalibrationDialog实例化,发现g_alignmentDialog赋值放在了Ui初始化后面。
结果
调整顺序后,实例化CTCameraAngleWidget的时,全局对象g_alignmentDialog非nullptr,connect的Flag为true。槽函数生效。