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 delete guiMainThread;//delete global_control_panel too
guiMainThread = NULL; guiMainThread = NULL;
if (!doesExternalQAppExist) if (doesExternalQAppExist)
{ {
qApp->quit(); 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) void CvWindow::setMouseCallBack(CvMouseCallback callback, void* param)
{ {
myView->setMouseCallBack(callback, 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() void CvWindow::icvLoadControlPanel()
{ {
QSettings settings("OpenCV2", QFileInfo(QApplication::applicationFilePath()).fileName() + " control panel"); QSettings settings("OpenCV2", QFileInfo(QApplication::applicationFilePath()).fileName() + " control panel");

View File

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