Не удалось получить доступ к parentWidget () - PullRequest
0 голосов
/ 06 июля 2018

Я работаю над проектом камеры. В этом я создал приложение Виджет QT типа окна. Я также добавил 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!");
    }
}

А операторы connect, которые отлично работают в классе 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(). Из-за этого те же функции соединения в 1-м классе диалога (CameraDialog) не работают. Как решить эту проблему, чтобы второй класс мог также получить доступ к функциям класса MainWindow?

Спасибо!

...