[Qt-interest] QWinWidget problem when using DeleteOnClose attribute

elizabeta petreska elizabeta.petreska at gmail.com
Wed Sep 23 09:24:33 CEST 2009


Hello

First of all, sorry if this is the wrong mailing list, just direct me where
to post my question if it is.

I am using Mfc to Qt Solution for showing Qt widgets in plugin dlls that are
loaded in third party Mfc application.
I am using the function QMfcApp::pluginInstance in my DllMain function to
make the QApplication object.

I reproduce the error on this very simple listing :

class SimpleDlg : public QDialog,public Ui::Dlg
{
Q_OBJECT

public:
    SimpleDlg(QWidget* parent=0);
    ~SimpleDlg(){}
    private slots:
    OnButtonClicked();
};

and in the implementation file :

SimpleDlg::SimpleDlg(QWidget* parent):QDialog(parent)
{
    this ->setAttribute(Qt::WA_DeleteOnClose);
}

SimpleDlg::OnButtonClicked()
{
         1:      this->showMinimized();

         2  :      MSG msg;
         3:          PeekMessage( &msg, NULL, 0, 0,0 );

         4:         lineEdit->setText("Crash"); //crashes here. If I comment
line this->showMinimized() the crash doesnot happen

         5:         this->showMaximized();

}

somewhere in the plugin dll :

QWinWidget* win=new QWinWidget(MfcAppHandle);
win->showCentered();
SimpleDlg* dlg=new SimpleDlg(win);
dlg->show();

The crash is occuring in line 4, since the dialog is already deleted when
the execution comes to that line.
Also note that if I uncomment line 1 i.e showMinimized() the crash is not
happening. The dialog is deleted after PeekMessage function, cause then the
Qt message hook which is
set with the Qt Mfc Migration Solution is executed.

So the question is who is sending the DefferedDelete event, is it
showMinimized () ? I was thinking that this event will be sent only
when I close the dialog hence the name Qt::WA_DeleteOnClose.

Also I don't think that the DefferedDelete event is send by showMinimized()
cause this doesnot make sense at all. So when the DefferedDelete should be
sent  normally and
what could be the problem in my example ?

Note that the when I show my dialog from regular Qt application i.e not Mfc
everything is working as it should.

Thank you for your time
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20090923/5f634dd6/attachment.html 


More information about the Qt-interest-old mailing list