Qt在槽里面弹出模态和非模态对话框

弹出模态对话框

1弹出Dialog以及Dialog子类

       //指不指定this都可以。没有具体分析this和非this有什么区别

HDialog  hd(this);
hd.exec();

}


2弹出widget

这里new的widget如果指定this。只有控件被显示。背景是透明的。如果有人知道为啥。帮忙说一下

HistoryWindow* pHistory=new HistoryWindow();

pHistory->setAttribute(Qt::WA_DeleteOnClose);
pHistory->setWindowModality(Qt::ApplicationModal);
pHistory->show();



弹出非模态

1弹出Dialog以及Dialog子类

{

HDialog*phd=new HDialog(this);

 /*

避免内存泄漏。有两个方式

1是指定phd->setAttribute(Qt::WA_DeleteOnClose);

2不调用WA_DeleteOnClose这一行也行。由于 new HDialog(this);的时候指定了this。所以this这个parent被关闭的时候也会delete这个phd

  只是这个phd的周期在this关闭之前一直在内存中。所以还是建议调用phd->setAttribute(Qt::WA_DeleteOnClose);

*/
phd->setAttribute(Qt::WA_DeleteOnClose);
phd->show();

}


2弹出widget

HistoryWindow* pHistory=new HistoryWindow();

pHistory->setAttribute(Qt::WA_DeleteOnClose);
pHistory->show();






你可能感兴趣的:(QT一些理解)