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