0

我正在做一个相机项目。在此我创建了一个 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

谢谢!

4

0 回答 0