qt quit和close_QT应用程序不会退出

can anyone tell me why this simple qt application does not quit

int main(int argc, char* argv[])

{

QApplication app(argc,argv);

QWidget* w = new QWidget(nullptr);

w->show();

w->close();

app.exec();

return 0;

}

Iv'e tryed to show all top level widgets with this loop

for (auto t : QApplication::topLevelWidgets())

{

t->show();

}

and the widget not destroyed after close,

even adding

w->setAttribute(Qt::WA_QuitOnClose);

does not help.

I'm using visual studio 2013 and qt with version 5.4

解决方案

The answere is simple:

QApplication will quit as soon as you close the last window - however, this only applies if the window is closed while the application runs!

In your example, at the time your run the application using a.exec(), there are no open windows. Thus, no window gets ever closed while the application runs and it won't quit. It will work as soon as you call w->close(); after you started the application.

If you still need to close the widget before starting (for whatever reason), you can do the following:

w->show();

QMetaObject::invokeMethod(w, "close", Qt::QueuedConnection);

app.exec();

This way, close will be called as soon as the application enters it's eventloop.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值