我正在做一个相机项目。在此我创建了一个 Window 类型的 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
课堂上运行良好的连接语句是:
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
?
谢谢!