我正在从事相机项目。在此,我创建了一个窗口类型的QT Widget应用程序。我还添加了2个单独的对话框窗口类,它们应该访问MainWindow
类中的函数。对话框类之一可以使用连接函数并为parentWidget()
参数设置QObject *context
值来从主类访问函数。使用非模态方法在相机按钮上调用对话框类:
void MainWindow::on_addCamera_Button_clicked()
{
flag1 = 1;
if(imageFilename != ""){
c++;
camera = new CameraDialog(this);
camera->show();
img2.copyTo(im);
img2.copyTo(img);
img2.copyTo(img1);
imshow("Map",img1);
setMouseCallback("Map", onMouseClick, &p);
connect(timer_ossm, SIGNAL(timeout()), this, SLOT(gui_update_Original_Video()));
connect(timer_ossm, SIGNAL(timeout()), this, SLOT(gui_update_Image_Coordinate()));
}
else {
QMessageBox::warning(this,"..",(QString)"Enter Image!");
}
}
在CameraDialog
类中正常工作的connect语句是:
CameraDialog::CameraDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::CameraDialog)
{
ui->setupUi(this);
ui->pushButton_Done->setCheckable(true);
cout<<parentWidget()<<endl;
connect(ui->pushButton_Done,SIGNAL(clicked()),parentWidget(),SLOT(clearVal()));
connect(ui->pushButton_Done,SIGNAL(clicked()),parentWidget(),SLOT(updateFlag()));
connect(ui->pushButton_Done, SIGNAL(released()),this,SLOT(close()));
connect(ui->pushButton_Apply,SIGNAL(clicked()),parentWidget(),SLOT(updateImage());
connect(ui->pushButton_Cancel,SIGNAL(clicked()),parentWidget(),SLOT(clearVal()));
}
但是当我为另一个对话框窗口(使用相同的非模态方法访问)的另一个类尝试相同的操作时,它表明parentWidget()
没有值,即,尝试时它显示值为0打印parentWidget()
的值。因此,第一个对话框类(CameraDialog
)中的相同连接功能不起作用。如何解决此问题,以便第二个类也可以访问MainWindow
类中的函数?
谢谢!