Merge pull request #27170 from Osse:qt-fix-closing-window

Fix closing of windows when using the Qt backend
This commit is contained in:
Alexander Smorkalov 2025-03-31 08:58:23 +03:00 committed by GitHub
commit d0c5a04ddb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 9 deletions

View File

@ -859,7 +859,7 @@ void GuiReceiver::isLastWindow()
delete guiMainThread;//delete global_control_panel too
guiMainThread = NULL;
if (!doesExternalQAppExist)
if (doesExternalQAppExist)
{
qApp->quit();
}
@ -1739,13 +1739,6 @@ CvWindow::CvWindow(QString name, int arg2)
}
CvWindow::~CvWindow()
{
if (guiMainThread)
guiMainThread->isLastWindow();
}
void CvWindow::setMouseCallBack(CvMouseCallback callback, void* param)
{
myView->setMouseCallBack(callback, param);
@ -2259,6 +2252,15 @@ void CvWindow::keyPressEvent(QKeyEvent *evnt)
}
void CvWindow::closeEvent(QCloseEvent* evnt)
{
QWidget::closeEvent(evnt);
if (guiMainThread)
guiMainThread->isLastWindow();
}
void CvWindow::icvLoadControlPanel()
{
QSettings settings("OpenCV2", QFileInfo(QApplication::applicationFilePath()).fileName() + " control panel");

View File

@ -298,7 +298,6 @@ class CvWindow : public CvWinModel
Q_OBJECT
public:
CvWindow(QString arg2, int flag = CV_WINDOW_NORMAL);
~CvWindow();
void setMouseCallBack(CvMouseCallback m, void* param);
@ -349,6 +348,7 @@ public:
protected:
virtual void keyPressEvent(QKeyEvent* event) CV_OVERRIDE;
virtual void closeEvent(QCloseEvent* event) CV_OVERRIDE;
private: