• 4250阅读
  • 4回复

[提问]为什么我的QWidget关不掉 [复制链接]

上一主题 下一主题
离线hlqm999
 

只看楼主 倒序阅读 楼主  发表于: 2013-03-14
关键词: widget问题
<pre q-content="" mt-10"="">#include<QApplication>
#include<QMainWindow>

#include<QMdiArea>
#include<QWidget>
intmain(intargc,char*argv[])
{
    QApplicationa(argc,argv);
    QMainWindow mw;
    QWidget*widget=newQWidget();
    QMdiArea*ma=newQMdiArea();
    ma->addSubWindow(widget);
    mw.setCentralWidget(ma);
   mw.show();widget->show();
   widget->close();    //关不掉???

   returna.exec();
}

如上代码,
运行后widget仍然显示在mw里,
通过关闭按钮可以关掉.
离线pxiao_xiao

只看该作者 1楼 发表于: 2013-03-14
QMdiArea::addSubWindow ( QWidget * widget, Qt::WindowFlags windowFlags = 0 )的相关文档有句说明如下:
The widget can be either a QMdiSubWindow or another QWidget (in which case the MDI area will create a subwindow and set the widget as the internal widget).
请注意括号里的话 在这种情况下MDIAREA会生成一个子窗体并将widget装载进去
离线jdwx

只看该作者 2楼 发表于: 2013-03-14
widget->close();    //关不掉??? 为什么呢?因为事件循环开始之前(就是a.exec()开始之前),close不了。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线justwake

只看该作者 3楼 发表于: 2013-03-15
EXIT(EXIT_SUCCESS)
离线hlqm999

只看该作者 4楼 发表于: 2013-03-18
回 1楼(pxiao_xiao) 的帖子
谢谢大侠的解答,这个问题困拢了我好久,终于知道原因了.
也谢谢其他热心的朋友,


快速回复
限100 字节
 
上一个 下一个